根据同一数组中另一个元素满足的条件更新 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 集合中数组的元素的主要内容,如果未能解决你的问题,请参考以下文章