从MongoDB中的内部数组元素中删除字段

时间:2013-12-05 15:48:45

标签: mongodb

说我有:

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": {}}});

给出错误:

“如果没有包含数组的相应查询字段,则无法应用位置运算符。”

任何帮助都非常感谢。

1 个答案:

答案 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();