目前,我在我的MongoDB数据库的单独字段中有我的lat / long,但如果我想进行地理空间搜索,我需要使用这种格式:
{ location : [ 50 , 30 ] }
如上所述,我可以通过什么方式将我的lat / long键的值转换为每个文档的新密钥?
TIA!
答案 0 :(得分:1)
您必须遍历所有没有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 geospatial indexing的顺序在文档中应与(经度,纬度)保持一致。