2016-11-19 5 views
0

Я использую пакет mongodb в своем приложении Nodejs. Я пытаюсь удалить вложенный объект. Он работает, когда я помещаю вложенный объект. Это не работает, когда я вставляю строку в состояние, и я не понимаю, почему. Кто-нибудь может мне помочь?Mongodb query не работает со строкой

Это не работает:

var tmp = 'records.' + j + '.domains'; 
records.update({'email': '<removed>'}, {'$pull': {tmp: {'_id': req.params.dn}}}); 

Эта работа:

records.update({'email': '<removed>'}, {'$pull': {'records.1.domain': {'_id': req.params.dn}}}); 

ответ

4

Вы должны использовать следующий синтаксис:

var tmp_key = 'records.' + j + '.domains'; 
var tmp_value = {'_id': req.params.dn}; 
var query = {}; 
query[tmp_key] = tmp_value; 
records.update({'email': '<removed>'}, {'$pull': query}); 
1

Потому что вы не можете использовать переменную в качестве ключа в литерала объекта. Вместо этого динамически создайте объект, используя obj[tmp] = nested_obj.