繁体   English   中英

从 mongodb 中的数组中删除一个元素

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM