当前位置:  开发笔记 > 数据库 > 正文

MongoDb从文档中删除子文档

如何解决《MongoDb从文档中删除子文档》经验,为你挑选了2个好方法。

我有一个包含以下数据的集合:

{

  "_id" : ObjectId("4e3951905e746b3805000000"),
  "m" : "hello",
  "r" : [{
      "_id" : ObjectId("4e3951965e746b8007000000"),
      "u" : 3,
      "m" : "response1"
    }, {
      "_id" : ObjectId("4e39519d5e746bc00f000000"),
      "u" : 3,
      "m" : "response2"
    }, {
      "_id" : ObjectId("4e3953dc5e746b5c07000000"),
      "u" : 3,
      "m" : "response3"
    }, {
      "_id" : ObjectId("4e3953ea5e746bd40f000001"),
      "u" : 3,
      "m" : "response"
    }],
  "u" : 3,
  "w" : 3
}
{
  "_id" : ObjectId("4e3952c75e746bd807000001"),
  "m" : "asdfa",
  "r" : [{
      "_id" : ObjectId("4e39544e5e746bc00f000001"),
      "u" : 3,
      "m" : "response5"
    }],
  "u" : 3,
  "w" : 3
}

任何人都可以建议如何从只有子文件id的'r'键中删除子文档,我要去del?

例如,我想del id一个id为4e39519d5e746bc00f000000的子文档所以这个子文档应该被删除

{
  "_id" : ObjectId("4e39519d5e746bc00f000000"),
  "u" : 3,
  "m" : "response2"
},

Andrew Orsic.. 25

这很简单,你只需要使用$ pull运算符:

db.items.update( {}, 
{ $pull : { r : {"_id": ObjectId("4e39519d5e746bc00f000000")} } }, false, false )


objmagic.. 7

dbh.users.update({"_id": ObjectId("4e39519d5e746bc00f000000")}, {"$unset":{"r":1}},False,False)

尝试使用未设置

参考:MongoDB:更新"$ unset"的修饰符语义



1> Andrew Orsic..:

这很简单,你只需要使用$ pull运算符:

db.items.update( {}, 
{ $pull : { r : {"_id": ObjectId("4e39519d5e746bc00f000000")} } }, false, false )



2> objmagic..:
dbh.users.update({"_id": ObjectId("4e39519d5e746bc00f000000")}, {"$unset":{"r":1}},False,False)

尝试使用未设置

参考:MongoDB:更新"$ unset"的修饰符语义

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有