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 $center spécifie un cercle à l’aide de paires de coordonnées héritées à utiliser dans les requêtes $geoWithin. Il définit un cercle pour une requête géospatiale sur un plan euclidien plat.
Syntaxe
{
$geoWithin: {
$center: [ [ <x>, <y> ], <radius> ]
}
}
Paramètres
| Paramètre | Descriptif |
|---|---|
<x> |
Coordonnée x du point central du cercle |
<y> |
Coordonnée y du point central du cercle |
<radius> |
Rayon du cercle dans les mêmes unités que les coordonnées |
Examples
Comprenons l’utilisation avec un exemple json à partir du jeu de données stores.
{
"_id": "a715ab0f-4c6e-4e9d-a812-f2fab11ce0b6",
"name": "Lakeshore Retail | Holiday Supply Hub - Marvinfort",
"location": { "lat": -74.0427, "lon": 160.8154 },
"staff": { "employeeCount": { "fullTime": 9, "partTime": 18 } },
"sales": {
"salesByCategory": [ { "categoryName": "Stockings", "totalSales": 25731 } ],
"revenue": 25731
},
"promotionEvents": [
{
"eventName": "Mega Savings Extravaganza",
"promotionalDates": {
"startDate": { "Year": 2023, "Month": 6, "Day": 29 },
"endDate": { "Year": 2023, "Month": 7, "Day": 7 }
},
"discounts": [
{ "categoryName": "Stockings", "discountPercentage": 16 },
{ "categoryName": "Tree Ornaments", "discountPercentage": 8 }
]
},
{
"eventName": "Incredible Discount Days",
"promotionalDates": {
"startDate": { "Year": 2023, "Month": 9, "Day": 27 },
"endDate": { "Year": 2023, "Month": 10, "Day": 4 }
},
"discounts": [
{ "categoryName": "Stockings", "discountPercentage": 11 },
{ "categoryName": "Holiday Cards", "discountPercentage": 9 }
]
},
{
"eventName": "Massive Deal Mania",
"promotionalDates": {
"startDate": { "Year": 2023, "Month": 12, "Day": 26 },
"endDate": { "Year": 2024, "Month": 1, "Day": 2 }
},
"discounts": [
{ "categoryName": "Gift Bags", "discountPercentage": 21 },
{ "categoryName": "Bows", "discountPercentage": 19 }
]
},
{
"eventName": "Super Saver Soiree",
"promotionalDates": {
"startDate": { "Year": 2024, "Month": 3, "Day": 25 },
"endDate": { "Year": 2024, "Month": 4, "Day": 1 }
},
"discounts": [
{ "categoryName": "Tree Ornaments", "discountPercentage": 15 },
{ "categoryName": "Stockings", "discountPercentage": 14 }
]
},
{
"eventName": "Fantastic Savings Fiesta",
"promotionalDates": {
"startDate": { "Year": 2024, "Month": 6, "Day": 23 },
"endDate": { "Year": 2024, "Month": 6, "Day": 30 }
},
"discounts": [
{ "categoryName": "Stockings", "discountPercentage": 24 },
{ "categoryName": "Gift Wrap", "discountPercentage": 16 }
]
},
{
"eventName": "Price Plunge Party",
"promotionalDates": {
"startDate": { "Year": 2024, "Month": 9, "Day": 21 },
"endDate": { "Year": 2024, "Month": 9, "Day": 28 }
},
"discounts": [
{ "categoryName": "Holiday Tableware", "discountPercentage": 13 },
{ "categoryName": "Holiday Cards", "discountPercentage": 11 }
]
}
],
"company": "Lakeshore Retail",
"city": "Marvinfort",
"storeOpeningDate": { "$date": "2024-10-01T18:24:02.586Z" },
"lastUpdated": { "$timestamp": { "t": 1730485442, "i": 1 } },
"storeFeatures": 38
}
Exemple 1 : Rechercher des magasins dans une zone circulaire
Nous allons trouver tous les magasins dans un rayon de 50 degrés de « First Up Consultants Microphone Bazar » à l’aide de notre jeu de données stores. Cette requête récupère les magasins dans un rayon de 50 degrés de l’emplacement First Up Consultants Microphone Bazar.
db.stores.find(
{
location: {
$geoWithin: {
$center: [[-112.7858, -29.1866], 50]
}
}
},
{
name: 1,
city: 1,
location: 1,
_id: 0
}
).limit(2)
La requête retourne des magasins dans un rayon de 50 degrés, ce qui peut être utile pour analyser la couverture du marché ou planifier les itinéraires de livraison.
[
{
"name": "Contoso, Ltd. | Baby Products Corner - Port Jerrold",
"location": { "lat": -72.7709, "lon": -24.3031 },
"city": "Port Jerrold"
},
{
"name": "VanArsdel, Ltd. | Smart Home Closet - Trystanport",
"location": { "lat": -64.5509, "lon": -28.7144 },
"city": "Trystanport"
}
]
Important
L’opérateur $center travaille sur un plan plat et euclidien.
Pour des calculs sphériques de type Terre plus précis, utilisez plutôt $centerSphere.
Le rayon est spécifié dans les mêmes unités que le système de coordonnées utilisé.