2

我在 MongoDb 地理空间索引方面做了很多工作,现在我正在用官方的 10gen C Sharp 驱动程序替换旧的 NoRM 框架。我遇到的问题是,对于由 NoRM 处理的现有数据,坐标的顺序相反 [y,x],而且似乎官方驱动程序不喜欢它。

所以我对于现有数据我有这个结构:

{
   "Coordinates" [: 
   {
      "Longitude" : -85.68216, 
      "Latitude" : 38.221452          
   },
   //.. more coordinates
   ]
}

所以我的问题是,如何修改数组中所有元素的顺序,使其看起来像:

{
   "Coordinates" [: 
   {
      "Latitude" : 38.221452,  
      "Longitude" : -85.68216               
   },
   //.. more coordinates
   ]
}

谢谢!

4

1 回答 1

2

如果要颠倒顺序,则需要遍历整个集合并以正确的格式重写每个文档。这里有一些 JavaScript 代码可以做到这一点:随意调味。

XDB = db.locations;
var iter = XDB.find()

do {
    var doc = iter.next();
    var newdoc = {};
    newdoc.Coordinates = [];
    for ( var k in doc.Coordinates ) {
        var newpair = { Latitude: doc.Coordinates[k].Latitude, 
                        Longitude: doc.Coordinates[k].Longitude } ;
        newdoc.Coordinates.push(newpair);
    }
    XDB.update({_id: doc._id}, newdoc );
} while ( iter.hasNext() );
于 2012-07-18T22:58:18.410 回答