Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Data geospasial sekarang dapat disimpan dan dikueri menggunakan Azure DocumentDB. Peningkatan ini menyediakan alat canggih untuk mengelola dan menganalisis data spasial, memungkinkan berbagai aplikasi seperti pelacakan lokasi real time, pengoptimalan rute, dan analitik spasial.
Berikut adalah gambaran umum singkat tentang perintah dan operator geospasial yang sekarang didukung:
Operator Kueri Geospasial
$geoIntersects
Memilih dokumen tempat geometri tertentu bersinggungan dengan geometri dokumen. Berguna untuk menemukan dokumen yang berbagi bagian ruang apa pun dengan geometri tertentu.
db.collection.find({
location: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$geoWithin
Memilih dokumen dengan data geospasial yang sepenuhnya ada dalam bentuk tertentu. Operator ini digunakan untuk menemukan dokumen dalam area yang ditentukan.
db.collection.find({
location: {
$geoWithin: {
$geometry: {
type: "Polygon",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$box
Menentukan area persegi panjang menggunakan dua pasangan koordinat (sudut kiri bawah dan kanan atas). Digunakan dengan $geoWithin operator untuk menemukan dokumen dalam persegi panjang ini. Misalnya, menemukan semua lokasi dalam wilayah persegi panjang di peta.
db.collection.find({
location: {
$geoWithin: {
$box: [[lowerLeftLong, lowerLeftLat], [upperRightLong, upperRightLat]]
}
}
})
$center
Menentukan area melingkar menggunakan titik tengah dan radius dalam radian. Digunakan dengan $geoWithin operator untuk menemukan dokumen dalam lingkaran ini.
db.collection.find({
location: {
$geoWithin: {
$center: [[longitude, latitude], radius]
}
}
})
$centerSphere
Mirip $centerdengan , tetapi mendefinisikan area bulat menggunakan titik tengah dan radius dalam radian. Berguna untuk penghitungan geometri bunyi.
db.collection.find({
location: {
$geoWithin: {
$centerSphere: [[longitude, latitude], radius]
}
}
})
$geometry
Menentukan objek GeoJSON untuk menentukan geometri. Digunakan dengan operator geospasial untuk melakukan kueri berdasarkan bentuk kompleks.
db.collection.find({
location: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>",
coordinates: [longitude, latitude]
}
}
}
})
$maxDistance
Menentukan jarak maksimum dari titik untuk kueri geospasial. Digunakan dengan $near operator dan $nearSphere . Misalnya, menemukan semua lokasi dalam jarak 2 km dari titik tertentu.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
$minDistance
Menentukan jarak minimum dari titik untuk kueri geospasial. Digunakan dengan $near operator dan $nearSphere .
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$minDistance: distance
}
}
})
$polygon
Menentukan poligon menggunakan array pasangan koordinat. Digunakan dengan $geoWithin operator untuk menemukan dokumen dalam poligon ini.
db.collection.find({
location: {
$geoWithin: {
$geometry: {
type: "Polygon",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$near
Menemukan dokumen yang berada di dekat titik tertentu. Mengembalikan dokumen yang diurutkan berdasarkan jarak dari titik. Misalnya, menemukan restoran terdekat ke lokasi pengguna.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
$nearSphere
Mirip $neardengan , tetapi melakukan perhitungan pada permukaan sferis. Berguna untuk perhitungan jarak yang lebih akurat di permukaan Bumi.
db.collection.find({
location: {
$nearSphere: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
Tahap Agregasi Geospasial
$geoNear
Melakukan kueri geospasial untuk mengembalikan dokumen yang diurutkan berdasarkan jarak dari titik tertentu. Bisa menyertakan kriteria kueri tambahan dan informasi jarak kembali.
db.collection.aggregate([
{
$geoNear: {
near: {
type: "Point",
coordinates: [longitude, latitude]
},
distanceField: "distance",
spherical: true
}
}
])
Pertimbangan dan Kemampuan yang Tidak Didukung
Saat ini, kueri dengan poligon GeoJSON berdering tunggal yang areanya melebihi satu belahan tidak didukung. Dalam kasus seperti itu, Azure DocumentDB mengembalikan pesan kesalahan berikut:
Error: Custom CRS for big polygon is not supported yet.Indeks komposit yang menggunakan indeks reguler dan indeks geospasial tidak diizinkan. Contohnya:
db.collection.createIndex({a: "2d", b: 1}); Error: Compound 2d indexes are not supported yetPoligon dengan lubang saat ini tidak didukung untuk digunakan dengan kueri $geoWithin. Meskipun memasukkan poligon dengan lubang tidak dibatasi, akhirnya gagal dengan pesan kesalahan berikut:
Error: $geoWithin currently doesn't support polygons with holesBidang kunci selalu diperlukan dalam tahap agregasi $geoNear. Jika bidang kunci hilang, kesalahan berikut terjadi:
Error: $geoNear requires a 'key' option as a StringTahapan
$geoNear,$near, dan$nearSpheretidak memiliki persyaratan indeks yang ketat, sehingga kueri ini tidak akan gagal jika indeks hilang.
Konten terkait
- Baca selengkapnya tentang kompatibilitas MongoDB Query Language (MQL) dengan MongoDB.
- Tinjau opsi untuk bermigrasi dari MongoDB ke Azure DocumentDB.