gpt4 book ai didi

MongoDB:使用来自同一文档的数据更新文档

转载 作者:IT老高 更新时间:2023-10-28 11:14:00 25 4
gpt4 key购买 nike

我有一个文档列表,每个文档都有 lat 和 lon 属性(以及其他)。

{ 'lat': 1, 'lon': 2, someotherdata [...] } 
{ 'lat': 4, 'lon': 1, someotherdata [...] }
[...]

我想修改它,使它看起来像这样:

{ 'coords': {'lat': 1, 'lon': 2}, someotherdata [...]} 
{ 'coords': {'lat': 4, 'lon': 1}, someotherdata [...]}
[...]

到目前为止,我得到了这个:

db.events.update({}, {$set : {'coords': {'lat': db.events.lat, 'lon': db.events.lon}}}, false, true)

但它将 db.events.latdb.events.lon 视为字符串。如何引用文档的属性?

干杯。

最佳答案

更新:如果您只需更改文档的结构而不更改值,请参阅 gipset's answer一个很好的解决方案。


根据对 Update documentation page 的评论(现在不可用) ,您无法从 update() 中引用当前文档的属性。

您必须像这样遍历所有文档并更新它们:

db.events.find().snapshot().forEach(
function (e) {
// update document, using its own properties
e.coords = { lat: e.lat, lon: e.lon };

// remove old properties
delete e.lat;
delete e.lon;

// save the updated document
db.events.save(e);
}
)

这样的函数也可以用于 map-reduce 作业或服务器端 db.eval() 作业,具体取决于您的需要。

关于MongoDB:使用来自同一文档的数据更新文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3788256/

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