gpt4 book ai didi

javascript - 在 MongoDB 中插入/更新插入嵌套文档

转载 作者:行者123 更新时间:2023-12-03 11:21:05 26 4
gpt4 key购买 nike

我正在尝试以类似于的结构更新插入嵌套文档(事件)

{
"_id" : "123",
"modules" : {
"x" : {
},
"y" : {
"activities" : {
"preview": {
"createdAt": "2014-10-13 15:21:22.113",
"data": {}
}
}
},
"z" : {
"activities" : {
"render": {
"createdAt": "2014-10-15 04:22:25.171",
"data": {}
},
"render": {
"createdAt": "2014-10-14 02:42:24.132",
"data": {}
}
}
}
}
}

然后我尝试

selector = { "_id": id, "modules": module, "activities" }
activity = { "preview": { "data": data }}
Meteor.users.upsert(selector, { $set: activity, $setOnInsert: { "createdAt: new Date()" }})

哪个产量

MongoError: insertDocument :: caused by :: 11000 E11000 duplicate key error index: meteor.users.$_id_  dup key: { : "123" }

_id 是唯一索引键。每个用户的_id“级别”和每个模块的activities“级别”上都有其他字段/文档,但没有与更新插入相关的字段/文档。每个模块都是独一无二的。在插入第一条记录之前,事件文档不存在。

因此,我希望有人能了解我想要完成的任务的要点,并能帮助我朝正确的方向前进。

最佳答案

Upsert 用于插入或更新(如果存在)新文档。它不适用于子文档。

您应该只更新您的文档:

selector = { "_id": id, "modules": module, preview : null }
activity = { "preview": { "data": data , "createdAt" : new Date() }}
Meteor.users.update(selector, { $set: 'activity' : activity }})

关于javascript - 在 MongoDB 中插入/更新插入嵌套文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27109072/

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