根据同一数组中另一个元素满足的条件更新 mongo 集合中数组的元素

Posted

技术标签:

【中文标题】根据同一数组中另一个元素满足的条件更新 mongo 集合中数组的元素【英文标题】:update an element of an array in mongo collection based on a condition met by another element in the same array 【发布时间】:2021-06-02 12:26:00 【问题描述】:

以下是我的收藏。


'_id': ObjectId('603fd4575250717d17aba89e'),
'user_id': 19,
'items': [


'price': 5,
'id': '342566b0d5f14117a228d8b17f215c4a'
,


 


 'price': 5,
 'id': '09e12c647fdf4c409e934eac23c73789'

],

  

我需要更新 id 为 09e12c647fdf4c409e934eac23c73789 的元素的价格,它的当前值为 5,我需要将其更新为 6,请问是否知道相同的查询。

我尝试了以下查询,但没有成功。

a = db.sample_collection.update_one("items.$.id": "09e12c647fdf4c409e934eac23c73789", 
"$set": "items.$price": 6)

有人可以帮我解决正确的查询吗?

【问题讨论】:

【参考方案1】:

更新查询应如下所示:

a = db.sample_collection.update_one("items.id": "09e12c647fdf4c409e934eac23c73789",  "$set":  "items.$.price": 6 )

这是updating a document in an array 的示例。执行更新时,positional operator, $ 应该只出现在更新文档中,而不是查询文档中。

【讨论】:

谢谢你的回答:)

以上是关于根据同一数组中另一个元素满足的条件更新 mongo 集合中数组的元素的主要内容,如果未能解决你的问题,请参考以下文章

根据同一文档中的另一个数组查询 Mongo 文档数组

根据MySQL中另一列分组的另一列的顺序更新列

mongo数据更新

如何使用节点 js 更新 mongo 文档中的数组元素?

检查一个数组是不是包含 JavaScript 中另一个数组的任何元素

检查一个数组是不是包含 JavaScript 中另一个数组的任何元素