我在我的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}}});
答案 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
动态构造对象。