Sommaire

L’opérateur $geoWithin

Cet opérateur permet de capturer des documents dont les données géospatiales résident entièrement à l’intérieur d’une forme définie sous la forme d’objets GeoJSON matérialisant un polygone ou un multipolygone (respectivement nommées Polygon et MultiPolygon) ou bien d’une forme définie par des coordonnées legacy.

Contrairement à $nearSphere, l’opérateur $geoWithin n’effectue pas de pré-tri avant l’affichage et ne requiert pas d’indexation géospatiale, bien qu’il soit toutefois conseillé d’utiliser un index 2dsphere ou 2d afin d’optimiser les performances des requêtes.

Pour les zones représentées par des formes dont la surface est égale ou supérieure à la taille d’un hémisphère, MongoDB utilise son propre Système de Coordonnées de Référence (SCR).

Commençons tout d’abord par créer un polygone qui exclut l’un des trois documents symbolisés par un marqueur orange sur notre carte.

images/04EP02.png

Nous stockerons ses coordonnées dans une variable JavaScript nommée polygone avant d’en faire usage dans notre première requête utilisant $geoWithin. Cette requête opérera sur la collection avignon2d en passant en paramètre notre polygone. Voyons d’abord la syntaxe de notre opérateur lorsqu’il travaille ...