Mongodb查询无法使用字符串

时间:2016-11-19 21:58:46

标签: node.js mongodb

我在我的Nodejs应用程序上使用mongodb包。我尝试删除嵌套对象。当我放置一个嵌套对象时,它工作。当我把字符串放入条件并且我不明白为什么时,它不起作用。有人能帮助我吗?

这不起作用:

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}}});

2 个答案:

答案 0 :(得分: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 :(得分:1)

因为您无法在对象文字中使用变量作为键。而是使用obj[tmp] = nested_obj动态构造对象。