如何删除mongodb特定文档中的数组中的项?

时间:2017-01-31 20:02:54

标签: mongodb

假设我在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")
    ]
}

P.S 我对所有相关文件做了哪些更改。 (许多用户可以拥有相同的电影ID)

谢谢:)

1 个答案:

答案 0 :(得分:0)

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

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