gpt4 book ai didi

mongodb getting on simple $push 位置运算符未从查询中找到所需的匹配项

转载 作者:可可西里 更新时间:2023-11-01 09:12:09 26 4
gpt4 key购买 nike

我有这个简单的更新 api 调用:这是我的文档:

{
"_id" : ObjectId("577a5b9a89xxx32a1"),
"oid" : {
"a" : 0,
"b" : 0,
"c" : NumberLong("1260351143035")
},
"sessions" : [
{

}
]
}

然后我尝试将 1 个元素插入 session 数组:

db.getCollection('CustomerInfo').update({"oid.c":1260351143035},{$push:{"sessions.$.asessionID":"test123"}}) 

但是我得到这个错误:

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.$.asessionID"
}
})

使用 $set im 得到同样的错误

最佳答案

正如错误所暗示的那样,

"The positional operator did not find the match needed from the query. Unexpanded update: sessions.$.asessionID",

如果 the array to be updated is also part of the query,位置运算符将起作用.在您的情况下,查询仅涉及嵌入文档 oid。在您的情况下使用的最佳更新运算符是 $set 代替。

您可以在查询中包含 session 数组,例如:

db.getCollection('CustomerInfo').update(
{
"oid.c": 1260351143035,
"sessions.0": {} // query where sessions array first element is an empty document
/* "sessions.0": { "$exists": true } // query where sessions array first element exists */
},
{
"$set": { "sessions.$.asessionID": "test123" }
}
)

关于mongodb getting on simple $push 位置运算符未从查询中找到所需的匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38196916/

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