Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’opérateur $geoIntersects sélectionne les documents dont le champ d’emplacement se croise avec un objet GeoJSON spécifié. Cet opérateur est utile lorsque vous souhaitez rechercher des magasins qui se croisent avec une zone géographique spécifique.
Syntaxe
{
<location field>: {
$geoIntersects: {
$geometry: {
type: <GeoJSON type>,
coordinates: <coordinates>
}
}
}
}
Paramètres
| Paramètre | Descriptif |
|---|---|
location field |
Champ qui contient l’objet GeoJSON |
type |
Type d’objet GeoJSON (par exemple, « Polygon », « MultiPolygon ») |
coordinates |
Coordonnées définissant l’objet GeoJSON |
Examples
Considérez cet exemple de document de la collection des magasins.
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
"location": {
"lat": -89.2384,
"lon": -46.4012
},
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 20
}
},
"sales": {
"totalSales": 75670,
"salesByCategory": [
{
"categoryName": "Wine Accessories",
"totalSales": 34440
},
{
"categoryName": "Bitters",
"totalSales": 39496
},
{
"categoryName": "Rum",
"totalSales": 1734
}
]
},
"promotionEvents": [
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Whiskey",
"discountPercentage": 7
},
{
"categoryName": "Bitters",
"discountPercentage": 15
},
{
"categoryName": "Brandy",
"discountPercentage": 8
},
{
"categoryName": "Sports Drinks",
"discountPercentage": 22
},
{
"categoryName": "Vodka",
"discountPercentage": 19
}
]
},
{
"eventName": "Steal of a Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 29
}
},
"discounts": [
{
"categoryName": "Organic Wine",
"discountPercentage": 19
},
{
"categoryName": "White Wine",
"discountPercentage": 20
},
{
"categoryName": "Sparkling Wine",
"discountPercentage": 19
},
{
"categoryName": "Whiskey",
"discountPercentage": 17
},
{
"categoryName": "Vodka",
"discountPercentage": 23
}
]
}
]
}
Exemple 1 : Rechercher des magasins qui se croisent géographiquement
Pour de meilleures performances, commencez par créer l’index requis 2dsphere .
db.stores.createIndex({ "location": "2dsphere" })
L’exemple de requête recherche les magasins qui se croisent avec une zone de polygone spécifique à l’aide de la stores collection. Ce polygone englobe plusieurs emplacements de magasin à partir de notre jeu de données.
db.stores.find(
{
location: {
$geoIntersects: {
$geometry: {
type: "Polygon",
coordinates: [[
[-80.0, -75.0],
[-80.0, -70.0],
[-55.0, -70.0],
[-55.0, -75.0],
[-80.0, -75.0]
]]
}
}
}
},
{
name: 1,
location: 1
}
).limit(2)
La requête retourne des magasins dont les emplacements se croisent avec le contour polygonal défini par les coordonnées.
[
{
"_id": "6bba7117-d180-4584-b50c-a2f843e9c9ab",
"name": "Wide World Importers | Craft Supply Mart - Heaneybury",
"location": { "lat": -64.4843, "lon": -107.7003 },
"city": "Heaneybury"
},
{
"_id": "2fd37663-e0ff-41d0-9c5a-3aec86285daa",
"name": "Relecloud | Cleaning Supply Closet - Patiencehaven",
"location": { "lat": -70.6077, "lon": -105.9901 },
"city": "Patiencehaven"
}
]
L’opérateur $geointersects est utile pour les scénarios suivants :
- Recherche de magasins dans une limite géographique spécifique
- Identification des zones de couverture de service
- Planification des itinéraires de livraison
Contenu connexe
- Passez en revue les options de migration de MongoDB vers Azure DocumentDB.
- En savoir plus sur la compatibilité des fonctionnalités avec MongoDB.