注文と関係があるようです。 $geoWithin
を使用している場合 ポリゴン内のポイントを見つけようとしている場合、その中にあるのは検索しているフィールドです。ただし、$geoIntersects
どちらの方向にも機能するため、ポリゴン内のポイント、またはポイントを含むポリゴンを検索できます。例:
db.geom.insert({
"polygons": {
"type":"Polygon",
"coordinates": [[
[ 17.60083012593064, 78.18557739257812],
[ 17.16834652544664, 78.19381713867188],
[ 17.17490690610013, 78.739013671875],
[ 17.613919673106714, 78.73489379882812],
[ 17.60083012593064, 78.18557739257812]
]]
}
});
db.geom.find({
polygons: {
$geoIntersects: {
$geometry: {
"type": "Point",
"coordinates": [17.3734, 78.4738]
}
}
}
});
また、最後にポリゴンの最初のポイントを繰り返す必要があることに注意してください。最後のペアを削除すると、$err
が表示されます :
クエリを正規化できません:BadValue bad geoquery"エラー。
MongoDBでは無効なジオメトリを挿入でき、2dsphereインデックスを追加しようとしたり、intersects / within / nearクエリを実行したりした場合にのみ文句を言うようです。これは、GeoJSONが有効なジオメトリでなくても有効なJSONである可能性があるためです。