Używanie MongoDB 3.2 Próbuję użyć zapytań 2dsphere w zbiorze Punktów.
Powiedzmy mam kolekcja cust_5_abcd z indeksem 2dsphere na the_geom pola.
Dodaj geometrię w kolekcji:
db.cust_5_abcd.insert({
"chps0" : "Texte d'une ligne",
"the_geom" : {
"type" : "Point",
"coordinates" : [
1.032715,
40.380028
]
}})
Teraz próbuję kwerendy tego punktu za pomocą $ geoWithin aby wszystkie dane wewnątrz określonego wielokąta. Tutaj uzyskuję inny wynik, jeśli używam $ geometry z definicją GeoJSON lub z $ polygon i ścisłymi współrzędnymi. Może brakuje czegoś w dokumentacji lub czegoś, co źle zrozumiałem.
Z $ geometrii daje żadnego rezultatu:
db.cust_5_abcd.find( { the_geom:
{ $geoWithin:
{ $geometry:
{
"type": "Polygon",
"coordinates": [
[
[ -16.237793, 40.162083 ],
[ -16.237793, 51.835778 ],
[ -13.776855, 51.835778 ],
[ -13.776855, 41.426253 ],
[ 14.765625, 41.426253 ],
[ 14.765625, 40.162083 ],
[ -16.237793, 40.162083 ]
]
]
}
}
}
})
Z $ wielokąt zwraca moją Point:
db.cust_5_abcd.find({ the_geom:
{ $geoWithin:
{ $polygon:
[
[ -16.237793, 40.162083 ],
[ -16.237793, 51.835778 ],
[ -13.776855, 51.835778 ],
[ -13.776855, 41.426253 ],
[ 14.765625, 41.426253 ],
[ 14.765625, 40.162083 ],
[ -16.237793, 40.162083 ]
]
}
}
})
To jest trochę dziwne ..., zwłaszcza że query.explain ("executionStats") pokazuje, że pierwsze zapytanie używa indeksu (jeśli zostało utworzone), a drugie nie ... – profesor79