Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR:
MongoDB vCore
Geospatiala data kan nu lagras och frågas med hjälp av vCore-baserade Azure Cosmos DB för MongoDB. Den här förbättringen innehåller kraftfulla verktyg för att hantera och analysera rumsliga data, vilket möjliggör en mängd olika program, till exempel platsspårning i realtid, routningsoptimering och rumslig analys.
Här är en snabb översikt över de geospatiala kommandon och operatorer som nu stöds:
Markerar dokument där en angiven geometri korsar dokumentens geometri. Användbart för att hitta dokument som delar en del av utrymmet med en viss geometri.
db.collection.find({
location: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
Markerar dokument med geospatiala data som finns helt inom en angiven form. Den här operatorn används för att hitta dokument inom ett definierat område.
db.collection.find({
location: {
$geoWithin: {
$geometry: {
type: "Polygon",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
Definierar ett rektangulärt område med två koordinatpar (nedre vänstra och övre högra hörn). Används med operatorn $geoWithin
för att hitta dokument i den här rektangeln. Du kan till exempel hitta alla platser i en rektangulär region på en karta.
db.collection.find({
location: {
$geoWithin: {
$box: [[lowerLeftLong, lowerLeftLat], [upperRightLong, upperRightLat]]
}
}
})
Definierar ett cirkulärt område med hjälp av en mittpunkt och en radie i radianer. Används med operatorn $geoWithin
för att hitta dokument i den här cirkeln.
db.collection.find({
location: {
$geoWithin: {
$center: [[longitude, latitude], radius]
}
}
})
$center
Liknar , men definierar ett sfäriskt område med hjälp av en mittpunkt och en radie i radianer. Användbart för sfäriska geometriberäkningar.
db.collection.find({
location: {
$geoWithin: {
$centerSphere: [[longitude, latitude], radius]
}
}
})
Anger ett GeoJSON-objekt för att definiera en geometri. Används med geospatiala operatorer för att utföra frågor baserat på komplexa former.
db.collection.find({
location: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>",
coordinates: [longitude, latitude]
}
}
}
})
Anger det maximala avståndet från en punkt för en geospatial fråga. Används med $near
och $nearSphere
operatorer. Du kan till exempel hitta alla platser inom 2 km från en viss punkt.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
Anger det minsta avståndet från en punkt för en geospatial fråga. Används med $near
och $nearSphere
operatörer.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$minDistance: distance
}
}
})
Definierar en polygon med hjälp av en matris med koordinatpar. Används med operatorn $geoWithin
för att hitta dokument i den här polygonen.
db.collection.find({
location: {
$geoWithin: {
$geometry: {
type: "Polygon",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
Söker efter dokument som ligger nära en angiven punkt. Returnerar dokument sorterade efter avstånd från punkten. Du kan till exempel hitta närmaste restauranger till en användares plats.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
$near
Liknar , men utför beräkningar på en sfärisk yta. Användbart för mer exakta avståndsberäkningar på jordens yta.
db.collection.find({
location: {
$nearSphere: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
Utför en geospatial fråga för att returnera dokument sorterade efter avstånd från en angiven punkt. Kan innehålla ytterligare frågevillkor och returavståndsinformation.
db.collection.aggregate([
{
$geoNear: {
near: {
type: "Point",
coordinates: [longitude, latitude]
},
distanceField: "distance",
spherical: true
}
}
])
För närvarande stöds inte frågor med en geoJSON-polygon med en enda ring, vars område överskrider en enda halvklot. I sådana fall returnerar Mongo vCore följande felmeddelande:
Error: Custom CRS for big polygon is not supported yet.
Ett sammansatt index med ett vanligt index och geospatialt index tillåts inte. Till exempel:
db.collection.createIndex({a: "2d", b: 1}); Error: Compound 2d indexes are not supported yet
Polygoner med hål stöds för närvarande inte för användning med $geoWithin frågor. Även om infogning av en polygon med hål inte är begränsad misslyckas den till slut med följande felmeddelande:
Error: $geoWithin currently doesn't support polygons with holes
Nyckelfältet krävs alltid i $geoNear aggregeringssteget. Om nyckelfältet saknas uppstår följande fel:
Error: $geoNear requires a 'key' option as a String
Faserna
$geoNear
,$near
och$nearSphere
har inte strikta indexkrav, så dessa frågor misslyckas inte om ett index saknas.
- Läs mer om funktionskompatibilitet med MongoDB.
- Granska alternativ för migrering från MongoDB till Azure Cosmos DB för MongoDB vCore.