目前,我在 MongoDB 数据库中的不同字段中有我的纬度/经度,但如果我想进行地理空间搜索,我需要采用这种格式:
{ location : [ 50 , 30 ] }
如上所述,我可以通过什么方式将我的 lat/long 键的值转换为每个文档的新键?
蒂亚!
目前,我在 MongoDB 数据库中的不同字段中有我的纬度/经度,但如果我想进行地理空间搜索,我需要采用这种格式:
{ location : [ 50 , 30 ] }
如上所述,我可以通过什么方式将我的 lat/long 键的值转换为每个文档的新键?
蒂亚!
您将不得不遍历所有没有location
字段的文档并添加它(大概删除纬度/经度字段,除非这会破坏您的应用程序)。
db.mycollection.find( { location : { $exists : false } } ).forEach(
function (doc) {
// Add (lon, lat) pairs .. order is important
doc.location = { lon: doc.lon, lat: doc.lat };
// Remove old properties
delete doc.lon;
delete doc.lat;
// Save the updated document
db.mycollection.save(doc);
}
)
请注意,MongoDB地理空间索引的顺序在您的文档中应与(经度、纬度)一致。