Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der $geoIntersects-Operator wählt Dokumente aus, deren Positionsfeld sich mit einem angegebenen GeoJSON-Objekt überschneidet. Dieser Operator ist nützlich, wenn Sie Speicher finden möchten, die sich mit einem bestimmten geografischen Gebiet schneiden.
Syntax
{
<location field>: {
$geoIntersects: {
$geometry: {
type: <GeoJSON type>,
coordinates: <coordinates>
}
}
}
}
Die Parameter
| Parameter | Description |
|---|---|
location field |
Das Feld, das das GeoJSON-Objekt enthält |
type |
Der GeoJSON-Objekttyp (z. B. „Polygon“, „MultiPolygon“) |
coordinates |
Die Koordinaten, die das GeoJSON-Objekt definieren |
Examples
Betrachten Sie dieses Beispieldokument aus der Stores-Sammlung.
{
"_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
}
]
}
]
}
Beispiel 1 : Suchen von Speichern, die geografisch überschneiden
Um eine bessere Leistung zu erzielen, beginnen Sie mit dem Erstellen des erforderlichen 2dsphere Indexes.
db.stores.createIndex({ "location": "2dsphere" })
In der Beispielabfrage werden Speicher gefunden, die sich mit einem bestimmten Polygonbereich überschneiden, indem Sie die stores Auflistung verwenden. Dieses Polygon umfasst mehrere Speicherorte aus unserem Dataset.
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)
Die Abfrage gibt Speicher zurück, deren Positionen sich mit der polygonalen Kontur schneiden, die durch die Koordinaten definiert ist.
[
{
"_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"
}
]
Der $geointersects-Operator ist für die folgenden Szenarien nützlich:
- Suchen nach Geschäften innerhalb einer bestimmten geografischen Grenze
- Identifizieren von Dienstabdeckungsbereichen
- Planen von Lieferrouten
Verwandte Inhalte
- Überprüfen Sie die Optionen für die Migration von MongoDB zu Azure DocumentDB.
- Weitere Informationen zur Featurekompatibilität mit MongoDB.