我已经阅读了文档,但它没有按预期工作。我有以下文件:
{
"_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是什么意思?
答案 0 :(得分:0)
您的文档的正确格式为:
db.articles.ensureIndex({
"location" : "2dsphere",
"location.postal_code":1,
"location.country":1,
"location.address":1
})
由于这些字段是"位置"子文档使用"点符号"。
指定完整路径 1
或-1
的符号分别代表升序和降序。
请注意,作为复合索引,这些字段实际上仅在您结合使用此索引的地理空间查询时使用,因为" 2dsphere" index元素是第一个。我建议" country"对于搜索"附近"会有点广泛。或者"在"内点坐标。但其他人可以有效地过滤结果。