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在答案中添加了这一点。如果您需要更多帮助,请创建一个新问题,因为这样会比更新问题更容易引起注意。