【问题标题】:MongoDb remove subdocument from documentMongoDb 从文档中删除子文档
【发布时间】:2013-12-26 16:06:54
【问题描述】:

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

{

  "_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
}

谁能建议如何从 'r' 键中删除子文档 只有子文档的 id,我要删除?

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

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

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    很简单,你只需要使用$pull操作符:

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

    【讨论】:

    • 我想知道代码中的false
    【解决方案2】:
    dbh.users.update({"_id": ObjectId("4e39519d5e746bc00f000000")}, {"$unset":{"r":1}},False,False)
    

    尝试使用未设置

    参考:MongoDB : Update Modifier semantics of "$unset"

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 1970-01-01
      • 2013-09-04
      • 2013-07-23
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      相关资源
      最近更新 更多