[英]Delete an element from an array in mongodb
假设我在 mongoDB 中有一个 object:
collection_name: book_info
{_id:"121as", "book_num":"12a", "book_name":"lotr", "info":[ {"borrowerAddress":["NY","Delhi"] },
{"borrowerAddress":["SI","Ghana"] } ] }
我想从信息中删除一个元素“NY”。
为此,我可以做的是从book_info
集合中获取 object 并应用循环并在数组中找到元素时删除并将数据保存到数据库中。
但我想做的是同时删除和更新,而无需获取数据并再次循环和更新。
此外,如果可以直接进行数据库操作,根据提供的解决方案,任何人都可以建议我获取数据、应用循环和删除数据是有效的还是直接从数据库中删除数据更快。
如果有人需要任何进一步的信息,请告诉我。
附加问题:
doc1: {_id:"121as", "book_num":"12a", "book_name":"lotr", "info":[ {"borrowerAddress":["NY","Delhi"] },
{"borrowerAddress":["SI","Ghana"] } ] }
doc2: {_id:"213s", "book_num":"1c", "book_name":"hp", "info":[ {"borrowerAddress":["NY","Delhi"] },
{"borrowerAddress":["SI","Ghana"] } ] }
假设我在book_info
集合中有多个文档,其中包含不同的书名和详细信息,并且我只想删除"book_name":"lotr"
的文档,我从文档中删除地址 "NY"。
您可以尝试使用$pull
运算符更新查询以从数组中删除匹配元素, $[]
位置为 info 数组中的所有元素,
db.collection.update(
{ "info.borrowerAddress": "NY" },
{ $pull: { "info.$[].borrowerAddress": "NY" },
{ multi: true }
})
假设我在 book_info 集合中有多个文档,其中包含不同的书名和详细信息,并且我只想删除 "book_name":"lotr" 的文档,我从文档中删除地址 "NY"。
db.collection.update(
{ "book_name":"lotr", "info.borrowerAddress": "NY" },
{ $pull: { "info.$[].borrowerAddress": "NY" },
{ multi: true }
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.