0

我有一个 mongodb 集合,其中包含数千条带有纬度和经度的“记录”,例如:

{ "_id" : ObjectId("50ad4f686579e337e1ec2294"), "place" : "Portugal", "lat" : 41.8343, "lon" : -8.3342 }

如何更新所有集合“记录”以将 lat 和 lon 放入一个名为 location 的新字段中,如下所示:

{ "_id" : ObjectId("50ad4f686579e337e1ec2294"), "place" : "Portugal", "location": {"lat" : 41.8343, "lon" : -8.3342 } }

问候假

4

1 回答 1

1

基本上你不能只使用更新来做到这一点。

您必须遍历所有文档并就地更新:

db.coll.find().forEach(
  function (doc) {
    doc.location = { lat: doc.lat, lon: doc.lon };
    delete doc.lat;
    delete doc.lon;
    db.coll.save(doc);
  }
)

另一种选择是以编程方式执行此操作。遍历每个文档。使用您选择的编程语言复制它并以您想要的方式更新每个文档

PS 当你请人帮忙时——确保你的起始代码没有错误。我花了很长时间才发现失踪“

于 2012-11-22T02:28:22.757 回答