إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يمكن الآن تخزين البيانات الجغرافية المكانية والاستعلامات باستخدام Azure DocumentDB. يوفر هذا التحسين أدوات قوية لإدارة البيانات المكانية وتحليلها، ما يتيح مجموعة واسعة من التطبيقات مثل تتبع الموقع في الوقت الحقيقي، وتحسين المسار، والتحليلات المكانية.
فيما يلي نظرة عامة سريعة على الأوامر الجغرافية المكانية وعوامل التشغيل المدعومة الآن:
عوامل تشغيل الاستعلام الجيوفضائي
$geoIntersects
تحديد المستندات التي تتقاطع فيها هندسة محددة مع هندسة المستندات. مفيدة للعثور على المستندات التي تشترك في أي جزء من المساحة مع هندسة معينة.
db.collection.find({
location: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$geoWithin
تحديد المستندات التي تتضمن بيانات جغرافية مكانية موجودة بالكامل داخل شكل محدد. يتم استخدام عامل التشغيل هذا للبحث عن المستندات داخل منطقة محددة.
db.collection.find({
location: {
$geoWithin: {
$geometry: {
type: "Polygon",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$box
تعريف منطقة مستطيلة باستخدام زوجين من الإحداثيات (الزاوية السفلية اليمنى وأعلى اليمين). يستخدم مع عامل التشغيل للبحث عن $geoWithin المستندات داخل هذا المستطيل. على سبيل المثال، البحث عن جميع المواقع داخل منطقة مستطيلة على الخريطة.
db.collection.find({
location: {
$geoWithin: {
$box: [[lowerLeftLong, lowerLeftLat], [upperRightLong, upperRightLat]]
}
}
})
$center
تعريف منطقة دائرية باستخدام نقطة مركزية ونصف قطر بالتقدير الدائري. يستخدم مع عامل التشغيل للبحث عن $geoWithin المستندات داخل هذه الدائرة.
db.collection.find({
location: {
$geoWithin: {
$center: [[longitude, latitude], radius]
}
}
})
$centerSphere
على $centerغرار ، ولكنه يحدد منطقة كروية باستخدام نقطة مركزية ونصف قطر بالتقدير الدائري. مفيد لحسابات الهندسة الكروية.
db.collection.find({
location: {
$geoWithin: {
$centerSphere: [[longitude, latitude], radius]
}
}
})
$geometry
تحديد كائن GeoJSON لتعريف هندسة. يستخدم مع عوامل التشغيل الجغرافية المكانية لتنفيذ الاستعلامات استنادا إلى الأشكال المعقدة.
db.collection.find({
location: {
$geoIntersects: {
$geometry: {
type: "<GeoJSON object type>",
coordinates: [longitude, latitude]
}
}
}
})
$maxDistance
تحديد أقصى مسافة من نقطة لاستعلام جيوفضائي. يستخدم مع $near و $nearSphere عوامل التشغيل. على سبيل المثال، العثور على جميع المواقع ضمن 2 كم من نقطة معينة.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
$minDistance
تحديد الحد الأدنى للمسافة من نقطة لاستعلام جيوفضائي. يستخدم مع $near و $nearSphere عوامل التشغيل.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$minDistance: distance
}
}
})
$polygon
تعريف مضلع باستخدام صفيف من أزواج الإحداثيات. يستخدم مع $geoWithin عامل التشغيل للعثور على المستندات داخل هذا المضلع.
db.collection.find({
location: {
$geoWithin: {
$geometry: {
type: "Polygon",
coordinates: [[[...], [...], [...], [...]]]
}
}
}
})
$near
البحث عن المستندات القريبة من نقطة محددة. إرجاع المستندات التي تم فرزها حسب المسافة من النقطة. على سبيل المثال، العثور على أقرب المطاعم إلى موقع المستخدم.
db.collection.find({
location: {
$near: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
$nearSphere
على $nearغرار ، ولكنه يقوم بإجراء عمليات حسابية على سطح كروي. مفيد لحسابات المسافة الأكثر دقة على سطح الأرض.
db.collection.find({
location: {
$nearSphere: {
$geometry: {
type: "Point",
coordinates: [longitude, latitude]
},
$maxDistance: distance
}
}
})
مرحلة التجميع الجيوفضائي
$geoNear
تنفيذ استعلام جيوفضائي لإرجاع المستندات التي تم فرزها حسب المسافة من نقطة محددة. يمكن أن تتضمن معايير استعلام إضافية وإرجاع معلومات المسافة.
db.collection.aggregate([
{
$geoNear: {
near: {
type: "Point",
coordinates: [longitude, latitude]
},
distanceField: "distance",
spherical: true
}
}
])
الاعتبارات والقدرات غير المدعومة
حاليا، الاستعلام باستخدام مضلع GeoJSON ذو حلقة واحدة تتجاوز مساحته نصف الكرة الواحد غير مدعوم. في مثل هذه الحالات، يقوم Azure DocumentDB بإرجاع رسالة الخطأ التالية:
Error: Custom CRS for big polygon is not supported yet.لا يسمح بفهرس مركب يستخدم فهرسا عاديا ومؤشرا جغرافيا مكانيا. على سبيل المثال:
db.collection.createIndex({a: "2d", b: 1}); Error: Compound 2d indexes are not supported yetالمضلعات ذات الثقوب غير مدعومة حاليا للاستخدام مع استعلامات $geoWithin. على الرغم من أن إدراج مضلع به ثقوب غير مقيد، فإنه يفشل في النهاية مع رسالة الخطأ التالية:
Error: $geoWithin currently doesn't support polygons with holesحقل المفتاح مطلوب دائما في مرحلة التجميع $geoNear. إذا كان حقل المفتاح مفقودا، يحدث الخطأ التالي:
Error: $geoNear requires a 'key' option as a String$geoNear$nearلا تحتوي المراحل و و$nearSphereعلى متطلبات فهرس صارمة، لذلك لن تفشل هذه الاستعلامات إذا كان الفهرس مفقودا.
محتوى ذو صلة
- اقرأ المزيد حول توافق لغة استعلام MongoDB (MQL) مع MongoDB.
- راجع خيارات الترحيل من MongoDB إلى Azure DocumentDB.