Mongodb 如何从文档对象的子对象集中删除一个条目?

Mongodb 如何从文档对象的子对象集中删除一个条目?,mongodb,Mongodb,例如,我们在集合测试中有文档 >> db.test.find() { name: abc, child: [ {name: child1, age:10}, {name: child2, age:20}, {name: child3, age:30} ]} { name: abcd, child: [ {name: child1, age:10},

例如,我们在集合测试中有文档

>> db.test.find()
{ name: abc,  child: [ {name: child1, age:10}, 
                       {name: child2, age:20}, 
                       {name: child3, age:30} ]}

{ name: abcd, child: [ {name: child1, age:10}, 
                       {name: child2, age:20}, 
                       {name: child3, age:30} ]}
我想从第一个文档中的子集合中删除年龄等于10岁的那个。我怎么做? 预期结果应该是:

{ name: abc,  child: [ {name: child2, age:20}, 
                       {name: child3, age:30} ]}

{ name: abcd, child: [ {name: child1, age:10}, 
                       {name: child2, age:20}, 
                       {name: child3, age:30} ]}

最简单的方法是使用
update
$pull

db.test.update({name:'abc'},{$pull:{'child':{'age':10}})
演示

编辑:关于您在评论中的问题,下面是如何设置对“abcd”的30岁孩子的评论

db.test.update({name:'abcd', 'child.age':30}, 
               {$set: {'child.$.comment': 'nothing'}})

最简单的方法是使用
update
$pull

db.test.update({name:'abc'},{$pull:{'child':{'age':10}})
演示

编辑:关于您在评论中的问题,下面是如何设置对“abcd”的30岁孩子的评论

db.test.update({name:'abcd', 'child.age':30}, 
               {$set: {'child.$.comment': 'nothing'}})

如何更新部分子对象?如果我希望得到:{“id”:ObjectId(“52034a77a45fcb007cbab9ac”),“name:“abc”,“child:[{“name:”child2”,“age:”20},{“name:”child3”,“age:”30}]}{“id”:ObjectId(“52034A74FCB007CBAB9AD”),“name:”abcd”,“child:[{“name:”child1”,“age:”10},{“name:”child2”,“年龄”:20},{“姓名”:“儿童3”,“年龄”:30,注释:'无'}]}。怎么做?@user2663484在答案中添加了这一点。如果您需要更多帮助,请创建一个新问题,因为这比更新问题更容易引起注意。如何更新部分儿童?如果我希望得到:{“id”:ObjectId(“52034a77a45fcb007cbab9ac”),“name:“abc”,“child:[{“name:”child2”,“age:”20},{“name:”child3”,“age:”30}]}{“id”:ObjectId(“52034A74FCB007CBAB9AD”),“name:”abcd”,“child:[{“name:”child1”,“age:”10},{“name:”child2”,“年龄”:20},{“姓名”:“儿童3”,“年龄”:30,注释:'无'}]}。怎么做?@user2663484在答案中添加了这一点。如果您需要更多帮助,请创建一个新问题,因为这样会比更新问题更容易引起注意。