gpt4 book ai didi

javascript - 将变量传递到 mongo 更新中?

转载 作者:可可西里 更新时间:2023-11-01 10:44:40 28 4
gpt4 key购买 nike

我有一个如下所示的 mongo 文档:

{ 
"_id" : '4fb2a4809ad7324ccba1f6b8',
"events" : {
"4fb2a4809ad7324ccba1f6b9" : {a:{z:1},b:{z:2},c:{z:3}},
"4fb2a4809ad7324ccba1f610" : {a:{z:1},b:{z:2},c:{z:3}}
}
}

然后我的服务器收到一个更新对象。

update = { 
_id = '4fb2a4809ad7324ccba1f6b8',
event_id: '4fb2a4809ad7324ccba1f610',
changed_data: {a:{b:3}}
}

a.b = 3 已创建或更改。这并不意味着 a = {b:3} 因此我不想覆盖已经存储在文档中的现有 a.z = 1。

我如何为这些更改编写原子更新?我想不通的主要是如何将变量传递到命令中以定位子对象。 (使用 node-mongodb-native)

感谢您的帮助!

更新后的文件看起来像:

{ 
"_id" : '4fb2a4809ad7324ccba1f6b8',
"events" : {
"4fb2a4809ad7324ccba1f6b9" : {a:{z:1},b:{z:2},c:{z:3}},
"4fb2a4809ad7324ccba1f610" : {a:{z:1, b:3},b:{z:2},c:{z:3}}
}
}

最佳答案

for (var id in update.changed_data) {
for (var sub_id in update.changed_data[id]) {
db.collection.update({ "_id" : update._id, "$atomic" : "true" },{ $set: {'events.' + update.event_id + '.'+ id +'.' + sub_id : update.changed_data[id][sub_id] } });
}
}

您还可以查看此 URL:http://www.mongodb.org/display/DOCS/Updating#Updating-ModifierOperations

关于javascript - 将变量传递到 mongo 更新中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10614397/

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