MongoDb更改数组元素的顺序

时间:2012-07-18 15:57:18

标签: c# mongodb mongodb-.net-driver

我使用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
   ]
}

谢谢!

1 个答案:

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