gpt4 book ai didi

对象数组的 MongoDB 更新

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

我在 mongodb 中有以下文档

 {
"_id" : ObjectId("521aff65e4b06121b688f076"),
"uuid" : "160597270101684",
sessionId" : "160597270101684.1",
"stamps" :
{
"currentVisit" : "1377500985",
"lastVisit" : "1377500985"
},
visits : [
{
"page":"google.com",
"method": "GET"
}
]
}

要求:

如果 uuidsessionId 不存在,我将像上面那样插入文档,否则我必须只将对象推送到 visits 数组。

任何帮助都将不胜感激。

最佳答案

MongoDB 在 update 上支持 upsert 选项如果匹配文档存在则更新它,如果不存在则插入一个新文档。在 MongoDB 2.4+ 中,您可以使用 $setOnInsert运算符进一步调整它以设置某些字段如果upsert执行插入。

db.test.update({ 
uuid: "160597270101684",
sessionId: "160597270101684.1"
}, {
$setOnInsert: {
stamps: {
currentVisit: "1377500985",
lastVisit: "1377500985"
}
},
$push:{
visits: {
page: "google.com",
method: "GET"
}
}
}, { upsert:true })

所以在上面的例子中,$pushvisits 总是会发生,但是 $setOnInsertstamps 仅当匹配文档尚不存在时才会出现。

关于对象数组的 MongoDB 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18439585/

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