如何确保复合2dsphere指数?

时间:2014-06-11 01:40:07

标签: mongodb

我已经阅读了文档,但它没有按预期工作。我有以下文件:

{
    "_id" : ObjectId("5396e85c12f43f5d1bafbd13"),
    "author" : ObjectId("5396ca2b0fe95cf96599d881"),
    "location" : {
        "address" : "An address",
        "coordinates" : [ 
            12.52891929999998, 
            16.620259
        ],
        "type" : "Point",
        "postal_code" : "333",
        "country" : "Country",
    },
    "description" : "aDescription"
}

我在Mongo中有以下索引:

{
    "location" : "2dsphere"
}

如何创建复合索引? 以下是正确的:

db.articles.ensureIndex( { location : "2dsphere", postal_code:1, country:1, address:1 } )

postal_code:1还是-1是什么意思?

1 个答案:

答案 0 :(得分:0)

您的文档的正确格式为:

db.articles.ensureIndex({ 
   "location" : "2dsphere", 
   "location.postal_code":1, 
   "location.country":1, 
   "location.address":1 
})

由于这些字段是"位置"子文档使用"点符号"。

指定完整路径

1-1的符号分别代表升序和降序。

请注意,作为复合索引,这些字段实际上仅在您结合使用此索引的地理空间查询时使用,因为" 2dsphere" index元素是第一个。我建议" country"对于搜索"附近"会有点广泛。或者"在"内点坐标。但其他人可以有效地过滤结果。