gpt4 book ai didi

mongodb - 更新数组中的项

转载 作者:IT老高 更新时间:2023-10-28 13:20:33 30 4
gpt4 key购买 nike

我在这样的 mongodb 集合中有一个文档:

{
sessions : [
{
issues : [
{
id : "6e184c73-2926-46e9-a6fd-357b55986a28",
text : "some text"
},
{
id : "588f4547-3169-4c39-ab94-8c77a02a1774",
text : "other text"
}
]
}
]
}

我想在第一个 session 中更新 ID 为 588f4547-3169-4c39-ab94-8c77a02a1774 的问题。

问题是我只知道这是第一个 session 和问题 ID(不是问题的索引!)

所以我尝试这样的事情:

db.mycollection.update({ "sessions.0.issues.id" : "588f4547-3169-4c39-ab94-8c77a02a1774"}, 
{ $set: { "sessions.0.issues.$.text" : "a new text" }})

但我得到了以下结果:

WriteResult({
"nMatched" : 0,
"nUpserted" : 0,
"nModified" : 0,
"writeError" : {
"code" : 16837,
"errmsg" : "The positional operator did not find the match needed from the query. Unexpanded update: sessions.0.issues.$.text"
}

我该怎么做?

感谢您的帮助。

最佳答案

你必须使用这个(显然是等价的)查询:

db.mycollection.update({"sessions.0.issues": {$elemMatch: {id: <yourValue>}}}, {$set: {"sessions.0.issues.$.text": "newText"}})

请注意,您的更新表达式是正确的。

关于 $elemMatch 的更多信息.

顺便说一句,MongoDB reference明确指出 $ 运算符不适用于“遍历嵌套数组的查询”。

重要提示:$elemMatch 仅适用于版本 4 或更高版本。

关于mongodb - 更新数组中的项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24166615/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com