Azure Cosmos DB ل MongoDB (الإصدار 3.2): الميزات المدعومة وبناء الجملة
ينطبق على: MongoDB
Azure Cosmos DB هي خدمة قواعد بيانات متعددة النماذج موزعة عالمياً من Microsoft. يمكنك التواصل مع Azure Cosmos DB ل MongoDB باستخدام أي من برامج تشغيل عميل MongoDB مفتوحة المصدر. يتيح Azure Cosmos DB ل MongoDB استخدام برامج تشغيل العميل الحالية من خلال الالتزام ببروتوكول MongoDB السلكي.
باستخدام Azure Cosmos DB ل MongoDB، يمكنك الاستمتاع بفوائد MongoDB التي اعتدت عليها، مع جميع قدرات المؤسسة التي يوفرها Azure Cosmos DB: التوزيع العالمي، والتقسيم التلقائي، وضمانات التوفر وزمن الانتقال، والفهرسة التلقائية لكل حقل، والتشفير في حالة الراحة، والنسخ الاحتياطية، وأكثر من ذلك بكثير.
إشعار
لا يحتوي الإصدار 3.2 من Azure Cosmos DB ل MongoDB على خطط حالية لانتهاء العمر الافتراضي (EOL). الحد الأدنى لإشعار فترة الصلاحية المستقبلية هو ثلاث سنوات.
دعم البروتوكول
تتوافق جميع الحسابات الجديدة ل Azure Cosmos DB ل MongoDB مع إصدار خادم MongoDB 3.6. تغطي هذه المقالة الإصدار 3.2 من MongoDB. يتم سرد عوامل التشغيل المعتمدة وأي قيود أو استثناءات أدناه. يجب أن يكون أي برنامج تشغيل عميل يفهم هذه البروتوكولات قادرا على الاتصال ب Azure Cosmos DB ل MongoDB.
يوفر Azure Cosmos DB ل MongoDB أيضا تجربة ترقية سلسة للحسابات المؤهلة. تعرف على المزيد من المعلومات في دليل ترقية إصدار MongoDB.
دعم لغة الاستعلام
يوفر Azure Cosmos DB ل MongoDB دعما شاملا لبنى لغة استعلام MongoDB. ويمكنك العثور أدناه على قائمة مفصلة من العمليات المدعومة حاليًّا وعوامل التشغيل والمراحل والأوامر والخيارات.
أوامر قاعدة البيانات
يدعم Azure Cosmos DB ل MongoDB أوامر قاعدة البيانات التالية:
إشعار
يسرد هذا المقال أوامر الخادم المعتمدة فقط ويستبعد وظائف التضمين من جانب العميل. وظائف التضمين من جانب العميل مثل deleteMany()
وupdateMany()
تستخدم داخليًّا أوامر الخادم delete()
وupdate()
. الوظائف التي تستخدم أوامر الخادم المدعومة متوافقة مع Azure Cosmos DB ل MongoDB.
أوامر عملية الاستعلام والكتابة
delete
find
findAndModify
getLastError
getMore
insert
update
أوامر المصادقة
logout
authenticate
getnonce
أوامر الإدارة
dropDatabase
listCollections
drop
create
filemd5
createIndexes
listIndexes
dropIndexes
connectionStatus
reIndex
Diagnostics commands
buildInfo
collStats
dbStats
hostInfo
listDatabases
whatsmyuri
تدفق التجميع
أوامر التجميع
aggregate
count
distinct
مراحل التجميع
$project
$match
$limit
$skip
$unwind
$group
$sample
$sort
$lookup
$out
$count
$addFields
تعبيرات التجميع
التعبيرات المنطقية
$and
$or
$not
تعبيرات Set
$setEquals
$setIntersection
$setUnion
$setDifference
$setIsSubset
$anyElementTrue
$allElementsTrue
تعبيرات المقارنة
$cmp
$eq
$gt
$gte
$lt
$lte
$ne
التعبيرات الحسابية
$abs
$add
$ceil
$divide
$exp
$floor
$ln
$log
$log10
$mod
$multiply
$pow
$sqrt
$subtract
$trunc
تعبيرات السلسلة
$concat
$indexOfBytes
$indexOfCP
$split
$strLenBytes
$strLenCP
$strcasecmp
$substr
$substrBytes
$substrCP
$toLower
$toUpper
تعبيرات المصفوفة
$arrayElemAt
$concatArrays
$filter
$indexOfArray
$isArray
$range
$reverseArray
$size
$slice
$in
تعبيرات التاريخ
$dayOfYear
$dayOfMonth
$dayOfWeek
$year
$month
$week
$hour
$minute
$second
$millisecond
$isoDayOfWeek
$isoWeek
التعبيرات الشرطية
$cond
$ifNull
مراكم التجميع
$sum
$avg
$first
$last
$max
$min
$push
$addToSet
العوامل
يتم دعم عوامل التشغيل التالية مع الأمثلة المقابلة لاستخدامها. ضع في اعتبارك هذا المستند النموذجي المستخدم في الاستعلامات أدناه:
{
"Volcano Name": "Rainier",
"Country": "United States",
"Region": "US-Washington",
"Location": {
"type": "Point",
"coordinates": [
-121.758,
46.87
]
},
"Elevation": 4392,
"Type": "Stratovolcano",
"Status": "Dendrochronology",
"Last Known Eruption": "Last known eruption from 1800-1899, inclusive"
}
عامل تشغيل | مثال |
---|---|
eq |
{ "Volcano Name": { $eq: "Rainier" } } |
gt |
{ "Elevation": { $gt: 4000 } } |
gte |
{ "Elevation": { $gte: 4392 } } |
lt |
{ "Elevation": { $lt: 5000 } } |
lte |
{ "Elevation": { $lte: 5000 } } |
ne |
{ "Elevation": { $ne: 1 } } |
in |
{ "Volcano Name": { $in: ["St. Helens", "Rainier", "Glacier Peak"] } } |
nin |
{ "Volcano Name": { $nin: ["Lassen Peak", "Hood", "Baker"] } } |
or |
{ $or: [ { Elevation: { $lt: 4000 } }, { "Volcano Name": "Rainier" } ] } |
and |
{ $and: [ { Elevation: { $gt: 4000 } }, { "Volcano Name": "Rainier" } ] } |
not |
{ "Elevation": { $not: { $gt: 5000 } } } |
nor |
{ $nor: [ { "Elevation": { $lt: 4000 } }, { "Volcano Name": "Baker" } ] } |
exists |
{ "Status": { $exists: true } } |
type |
{ "Status": { $type: "string" } } |
mod |
{ "Elevation": { $mod: [ 4, 0 ] } } |
regex |
{ "Volcano Name": { $regex: "^Rain"} } |
ملاحظات
في استعلامات $regex، تسمح التعبيرات ذات الارتساء الأيسر بالبحث في الفهرس. ومع ذلك، يؤدي استخدام المعدّل "i" (غير الحساس لحالة الأحرف الإنجليزية) والمعدّل "m" (متعدد الأسطر) إلى فحص المجموعة في جميع التعبيرات.
عندما تكون هناك حاجة لتضمين '$' أو '|'، فمن الأفضل إنشاء استعلمين regex (أو أكثر).
على سبيل المثال، بالنظر إلى الاستعلام الأصلي التالي: find({x:{$regex: /^abc$/})
، يجب تعديله على النحو التالي:find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})
.
يمكن أن يستخدم الجزء الأول الفهرس لتقييد البحث في تلك المستندات بدءًا من ^abc وسيطابق الجزء الثاني الإدخالات الدقيقة.
يمثل العامل الشريطي "|" وظيفة "أو" - يطابق الاستعلام find({x:{$regex: /^abc|^def/})
المستندات حيث يحمل الحقل "x" قيمًا تبدأ بـ "abc" أو "def". لاستخدام الفهرس، يوصى بتقسيم الاستعلام إلى استعلامين مختلفين مرتبطين بواسطة $ أو عامل التشغيل: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] })
.
عوامل تشغيل التحديث
عوامل تشغيل تحديث الحقول
$inc
$mul
$rename
$setOnInsert
$set
$unset
$min
$max
$currentDate
عوامل تشغيل تحديث الصفيف
$addToSet
$pop
$pullAll
$pull
(ملاحظة: $pull بشرط غير مدعوم)$pushAll
$push
$each
$slice
$sort
$position
عامل تشغيل تحديث معالجة البت
$bit
عوامل تشغيل الجغرافية المكانية
عامل تشغيل | مثال | مدعوم |
---|---|---|
$geoWithin |
{ "Location.coordinates": { $geoWithin: { $centerSphere: [ [ -121, 46 ], 5 ] } } } |
نعم |
$geoIntersects |
{ "Location.coordinates": { $geoIntersects: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } |
نعم |
$near |
{ "Location.coordinates": { $near: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } |
نعم |
$nearSphere |
{ "Location.coordinates": { $nearSphere : [ -121, 46 ], $maxDistance: 0.50 } } |
نعم |
$geometry |
{ "Location.coordinates": { $geoWithin: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } |
نعم |
$minDistance |
{ "Location.coordinates": { $nearSphere : { $geometry: {type: "Point", coordinates: [ -121, 46 ]}, $minDistance: 1000, $maxDistance: 1000000 } } } |
نعم |
$maxDistance |
{ "Location.coordinates": { $nearSphere : [ -121, 46 ], $maxDistance: 0.50 } } |
نعم |
$center |
{ "Location.coordinates": { $geoWithin: { $center: [ [-121, 46], 1 ] } } } |
نعم |
$centerSphere |
{ "Location.coordinates": { $geoWithin: { $centerSphere: [ [ -121, 46 ], 5 ] } } } |
نعم |
$box |
{ "Location.coordinates": { $geoWithin: { $box: [ [ 0, 0 ], [ -122, 47 ] ] } } } |
نعم |
$polygon |
{ "Location.coordinates": { $near: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } |
نعم |
فرز العمليات
عند استخدام العملية، يتم دعم عمليات الفرز في حقل واحد، ولكن عمليات الفرز findOneAndUpdate
في حقول متعددة غير مدعومة.
عوامل التشغيل الأخرى
عامل تشغيل | مثال | ملاحظات |
---|---|---|
$all |
{ "Location.coordinates": { $all: [-121.758, 46.87] } } |
|
$elemMatch |
{ "Location.coordinates": { $elemMatch: { $lt: 0 } } } |
|
$size |
{ "Location.coordinates": { $size: 2 } } |
|
$comment |
{ "Location.coordinates": { $elemMatch: { $lt: 0 } }, $comment: "Negative values"} |
|
$text |
غير مدعومة. استخدم $regex بدلًا منها. |
عوامل تشغيل غير مدعومة
$where
عاملي التشغيل و $eval
غير مدعومين من قبل Azure Cosmos DB.
الأساليب
الأساليب التالية مدعومة، وهي:
أسلوب المؤشر
الأسلوب | مثال | ملاحظات |
---|---|---|
cursor.sort() |
cursor.sort({ "Elevation": -1 }) |
لا يتم إرجاع المستندات التي لا تحتوي على مفتاح الفرز |
الفهارس المميزة
يقوم Azure Cosmos DB بفهرسة كل حقل في المستندات المكتوبة في قاعدة البيانات بشكل افتراضي. تضمن الفهارس الفريدة عدم احتواء حقل معين على قيم مكررة عبر جميع المستندات في مجموعة ما، على غرار الطريقة التي يتم بها الحفاظ على التفرد في المفتاح _id
الافتراضي. يمكنك إنشاء فهارس مخصصة في Azure Cosmos DB باستخدام الأمر createIndex، بما في ذلك القيد "الفريد".
تتوفر فهارس فريدة لجميع حسابات Azure Cosmos DB باستخدام Azure Cosmos DB ل MongoDB.
فترة البقاء (TTL)
يدعم Azure Cosmos DB مدة البقاء (TTL) فقط على مستوى المجموعة (_ts) في الإصدار 3.2. قم بالترقية إلى الإصدارات 3.6+ للاستفادة من أشكال TTL الأخرى.
المستخدم وإدارة الدور
لا يدعم Azure Cosmos DB المستخدمين والأدوار بعد. ومع ذلك، يدعم Azure Cosmos DB التحكم في الوصول المستند إلى الدور Azure (Azure RBAC) وكلمات المرور/المفاتيح للقراءة والكتابة والقراءة فقط التي يمكن الحصول عليها من خلال مدخل Microsoft Azure (صفحة سلسلة الاتصال).
النسخ المتماثل
يدعم Azure Cosmos DB النسخ المتماثل التلقائي الأصلي في أدنى المستويات. وتم توسيع هذا المنطق لتحقيق زمن الانتقال المنخفض، والنسخ المتماثل العالمي كذلك. لا يدعم Azure Cosmos DB أوامر النسخ المتماثل اليدوي.
مخاوف الكتابة
تعتمد بعض التطبيقات على كتابة استفسار الذي يحدد عدد الاستجابات المطلوبة أثناء عملية الكتابة. نظرا لكيفية معالجة Azure Cosmos DB للنسخ المتماثل في الخلفية، فإن جميع عمليات الكتابة تكون الحصة تلقائيا بشكل افتراضي. ويتم تجاهل أي مخاوف كتابة محددة بواسطة التعليمات البرمجية للعميل. تعرف على المزيد في استخدام مستويات التناسق لزيادة التوفر والأداء إلى أقصى حد.
التقسيم
يدعم Azure Cosmos DB التقسيم التلقائي من جانب الخادم. فهو يدير إنشاء الأقسام وتعيينها وتحقيق التوازن تلقائيًا. لا يدعم Azure Cosmos DB أوامر التقسيم اليدوي، ما يعني أنك لست مضطرا إلى استدعاء أوامر مثل shardCollection، addShard، balancerStart، moveChunk وما إلى ذلك. تحتاج فقط إلى تحديد مفتاح الجزء أثناء إنشاء الحاويات أو الاستعلام عن البيانات.
الخطوات التالية
- تعرف على كيفية استخدام Studio 3T مع Azure Cosmos DB ل MongoDB.
- تعرف على كيفية استخدام Robo 3T مع Azure Cosmos DB ل MongoDB.
- استكشف نماذج MongoDB باستخدام Azure Cosmos DB ل MongoDB.