[英]MongoDB - Compond Geo Polygon Indexing
我有幾個地理查詢,看起來與下面的示例相似。 它們不僅是Poly查詢中的一個要點,而且還有其他方面。
查詢:
{
"point": {
"$within": {
"$polygon": [
[
41.878335,
-87.627319999999997
],
[
41.877602000000003,
-87.627319999999997
],
[
41.879672999999997,
-87.627031000000002
],
[
41.878723999999998,
-87.627204000000006
],
[
41.878507999999997,
-87.627262000000002
],
[
41.878335,
-87.627262000000002
]
]
}
},
"MYLISTING": {
"$in": [
"All"
]
},
"SUPPORT": {
"$in": [
"Y"
]
},
"TYPE": {
"$in": [
"Food"
]
}
}
為了使這些操作更快,我將其他每個項目添加到一個索引中:
{ "v" : 1,
"key" : {
"point" : "2d",
"MYLISTING" : 1,
"SUPPORT" : 1,
"TYPE" : 1
},
"ns" : "mydb.collection",
"name" : "point_2d_MYLISTING_1_SUPPORT_1_TYPE_1"
}
但是,當對此進行解釋時,它似乎從未使用過該索引,它只是在使用我擁有的另一個索引,該索引僅是最初創建的point:2d索引。
我在這里有誤會嗎?
您只能擁有一個地理索引-現在有兩個地理索引,其中一部分是復合索引的一部分。 該文檔中提到了該限制: http : //api.mongodb.org/wiki/current/Geospatial%20Indexing.html#GeospatialIndexing-CreatingtheIndex
解決方案是簡單地刪除您在空間字段上具有的索引:
db.yourCollection.dropIndex( { point: '2d' };
然后,當您運行帶有explain()的查詢時,您會看到現在再次使用了哪個索引-在這種情況下,它應該是復合索引。 還要確保地理空間字段是您的復合索引的第一部分,如此處所述: http : //api.mongodb.org/wiki/current/Geospatial%20Indexing.html#GeospatialIndexing-CompoundIndexes
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.