我使用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
]
}
谢谢!
答案 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() );