如何删除 mongodb 特定文档中的数组中的项目? [复制]

Posted

技术标签:

【中文标题】如何删除 mongodb 特定文档中的数组中的项目? [复制]【英文标题】:How to delete an item in an array that is inside mongodb specific document? [duplicate] 【发布时间】:2017-06-17 09:59:23 【问题描述】:

假设我在 MongoDB 中有这个集合:


    "_id" : ObjectId("5890e5ea619737392c257846"),
    "email" : "ewrt@ert.com",
    "pass" : "123456",
    "firstName" : "sdlriugth",
    "lastName" : "sdfligkjh",
    "movies" : [ 
        ObjectId("5890e5ec619737392c257847"), 
        ObjectId("5890e5ed619737392c257848"), 
        ObjectId("5890e5ee619737392c257849"), 
        ObjectId("5890e5ee619737392c25784a")
    ]


    "_id" : ObjectId("5890e5f8619737392c25784c"),
    "email" : "wieruy@dgf.com",
    "pass" : "123456",
    "firstName" : "yjhtgj",
    "lastName" : "vbnvbng",
    "movies" : [ 
        ObjectId("5890e5fa619737392c25784d"), 
        ObjectId("5890e5fb619737392c25784e"), 
        ObjectId("5890e5fc619737392c25784f")
    ]

有 2 个用户,每个用户都有一个电影 ID 数组。

我想做一个查询,从拥有这部电影的用户那里删除一个特定的电影 ID。

假设我要删除电影 ID:“5890e5ee619737392c25784a”,我会得到:

    
    "_id" : ObjectId("5890e5ea619737392c257846"),
    "email" : "ewrt@ert.com",
    "pass" : "123456",
    "firstName" : "sdlriugth",
    "lastName" : "sdfligkjh",
    "movies" : [ 
        ObjectId("5890e5ec619737392c257847"), 
        ObjectId("5890e5ed619737392c257848"), 
        ObjectId("5890e5ee619737392c257849"), 
    ]


    "_id" : ObjectId("5890e5f8619737392c25784c"),
    "email" : "wieruy@dgf.com",
    "pass" : "123456",
    "firstName" : "yjhtgj",
    "lastName" : "vbnvbng",
    "movies" : [ 
        ObjectId("5890e5fa619737392c25784d"), 
        ObjectId("5890e5fb619737392c25784e"), 
        ObjectId("5890e5fc619737392c25784f")
    ]

附言 我要对所有相关文件进行哪些更改。 (许多用户可以拥有相同的电影 ID)

谢谢:)

【问题讨论】:

我忘了说我希望对所有相关文档进行更改,而不是针对特定用户。 【参考方案1】:

您可以使用 $pull 运算符。 所以在你的情况下,查询将是

db.collection.updateOne("_id": ObjectId("5890e5ea619737392c257846"),
"$pull": "movies": ObjectId("5890e5ee619737392c25784a"))

【讨论】:

以上是关于如何删除 mongodb 特定文档中的数组中的项目? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Mongoose和MongoDB 2.6插入子文档中数组中的特定位置

如何使用Mongoose和MongoDB 2.6插入子文档中数组中的特定位置

返回不包含特定内部数组项的 MongoDB 文档

使用 mongoDB 中的聚合删除集合中所有文档的特定字段

如何从 MongoDB 文档中的双重嵌套数组中删除元素。

Meteor / MongoDB - 如何证明数组中的任何项目是不是等于特定值,而不是在“真”的情况下从另一个数组中提取项目?