MONGO如何将2个地理字段转换为一个“数组”?

时间:2012-11-21 23:38:01

标签: mongodb collections

我有一个拥有成千上万的“记录”的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 } }

此致 FAK

1 个答案:

答案 0 :(得分: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);
  }
)

另一种选择可以是以编程方式执行此操作。浏览每个文件。使用您选择的编程语言复制它,并以您希望的方式更新每个文档

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