如何删除 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插入子文档中数组中的特定位置
Meteor / MongoDB - 如何证明数组中的任何项目是不是等于特定值,而不是在“真”的情况下从另一个数组中提取项目?