说我有:
db.test.insert({foos: [{bars: [{}, {}]}]});
db.test.insert({foos: [{bars: [{}, {}]}]});
现在我要删除所有foos的所有bar-fields。我该怎么做?
db.test.update({}, {$unset: {"foos.bars": 1}});
和
db.test.update({}, {$pull: {"foos.bars": {}}});
什么都不做。
db.test.update({}, {$pull: {"foos.$.bars": {}}});
给出错误:
“如果没有包含数组的相应查询字段,则无法应用位置运算符。”
任何帮助都非常感谢。
答案 0 :(得分:0)
在数组的子文档中添加exists-query似乎可以解决问题:
db.test.remove();
db.test.insert({foos: [{bars: [{"baz": 1} ]}]});
db.test.insert({foos: [{bars: [{"baz": 1} ]}]});
db.test.find({'foos.bars': {$exists: true}}).count();
db.test.update({'foos.bars': {$exists: true}}, {$unset: {'foos.$.bars': 1}}, false, true);
db.test.find({'foos.bars': {$exists: true}}).count();