更新MongoDB文档以进行地理空间搜索

时间:2012-07-31 01:20:00

标签: mongodb geospatial

目前,我在我的MongoDB数据库的单独字段中有我的lat / long,但如果我想进行地理空间搜索,我需要使用这种格式:

{ location : [ 50 , 30 ] } 

如上所述,我可以通过什么方式将我的lat / long键的值转换为每个文档的新密钥?

TIA!

1 个答案:

答案 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的顺序在文档中应与(经度,纬度)保持一致。