Azure Cosmos DB ل MongoDB (إصدار خادم 4.0): الميزات المدعومة وبناء الجملة
مقالة
ينطبق على: MongoDB
Azure Cosmos DB هي خدمة قواعد بيانات متعددة النماذج موزعة عالمياً من Microsoft. يمكنك التواصل مع Azure Cosmos DB ل MongoDB باستخدام أي من برامج تشغيل عميل MongoDB مفتوحة المصدر. يتيح Azure Cosmos DB ل MongoDB استخدام برامج تشغيل العميل الحالية من خلال الالتزام ببروتوكول MongoDB السلكي.
باستخدام Azure Cosmos DB ل MongoDB، يمكنك الاستمتاع بفوائد MongoDB التي اعتدت عليها، مع جميع إمكانات المؤسسة التي يوفرها Azure Cosmos DB: التوزيع العالمي، والتقسيم التلقائي، وضمانات التوفر وزمن الانتقال، والتشفير في حالة الراحة، والنسخ الاحتياطية، وأكثر من ذلك بكثير.
دعم البروتوكول
يتم سرد عوامل التشغيل المعتمدة وأي قيود أو استثناءات أدناه. يجب أن يكون أي برنامج تشغيل عميل يفهم هذه البروتوكولات قادرا على الاتصال ب Azure Cosmos DB ل MongoDB. عند إنشاء Azure Cosmos DB لحسابات MongoDB، تحتوي إصدارات 3.6+ من الحسابات على نقطة النهاية بالتنسيق *.mongo.cosmos.azure.com بينما يحتوي الإصدار 3.2 من الحسابات على نقطة النهاية بالتنسيق *.documents.azure.com.
ملاحظة
يسرد هذا المقال أوامر الخادم المعتمدة فقط وتستبعد وظائف التضمين من جانب العميل. تستخدم وظائف التضمين من جانب العميل مثل deleteMany() وupdateMany() داخليًا أوامر الخادم delete() وupdate(). تتوافق الوظائف التي تستخدم أوامر الخادم المدعومة مع Azure Cosmos DB ل MongoDB.
دعم لغة الاستعلام
يوفر Azure Cosmos DB ل MongoDB دعما شاملا لبنى لغة استعلام MongoDB. ويمكنك العثور أدناه على قائمة مفصلة من العمليات المدعومة حاليًّا وعوامل التشغيل والمراحل والأوامر والخيارات.
أوامر قاعدة البيانات
يدعم Azure Cosmos DB ل MongoDB أوامر قاعدة البيانات التالية:
لا يدعم $lookup بعد ميزة الاستعلامات الفرعية غير المترابطة المقدمة في إصدار الخادم 3.6. يمكنك تلقي خطأ مع رسالة تشتمل على let is not supported إذا حاولت استخدام عامل التشغيل $lookup مع الحقول let وpipeline.
التعبيرات المنطقية
الأمر
مدعوم
and
نعم
not
نعم
or
نعم
تعبيرات التحويل
الأمر
مدعوم
convert
نعم
toBool
نعم
toDate
نعم
toDecimal
نعم
toDouble
نعم
toInt
نعم
toLong
نعم
toObjectId
نعم
toString
نعم
تعيين التعبيرات
الأمر
مدعوم
setEquals
نعم
setIntersection
نعم
setUnion
نعم
setDifference
نعم
setIsSubset
نعم
anyElementTrue
نعم
allElementsTrue
نعم
تعبيرات المقارنة
ملاحظة
لا تدعم واجهة برمجة تطبيقات MongoDB تعبيرات المقارنة مع قيمة حرفية في الاستعلام.
الأمر
مدعوم
cmp
نعم
eq
نعم
gt
نعم
gte
نعم
lt
نعم
lte
نعم
ne
نعم
in
نعم
nin
نعم
التعبيرات الحسابية
الأمر
مدعوم
abs
نعم
add
نعم
ceil
نعم
divide
نعم
exp
نعم
floor
نعم
ln
نعم
log
نعم
log10
نعم
mod
نعم
multiply
نعم
pow
نعم
sqrt
نعم
subtract
نعم
trunc
نعم
تعبيرات السلسلة
الأمر
مدعوم
concat
نعم
indexOfBytes
نعم
indexOfCP
نعم
ltrim
نعم
rtrim
نعم
trim
نعم
split
نعم
strLenBytes
نعم
strLenCP
نعم
strcasecmp
نعم
substr
نعم
substrBytes
نعم
substrCP
نعم
toLower
نعم
toUpper
نعم
عامل تشغيل البحث عن النص
الأمر
مدعوم
meta
لا
تعبيرات الصفيف
الأمر
مدعوم
arrayElemAt
نعم
arrayToObject
نعم
concatArrays
نعم
filter
نعم
indexOfArray
نعم
isArray
نعم
objectToArray
نعم
range
نعم
reverseArray
نعم
reduce
نعم
size
نعم
slice
نعم
zip
نعم
in
نعم
عوامل تشغيل متغيرة
الأمر
مدعوم
map
نعم
let
نعم
متغيرات النظام
الأمر
مدعوم
$$CURRENT
نعم
$$DESCEND
نعم
$$KEEP
نعم
$$PRUNE
نعم
$$REMOVE
نعم
$$ROOT
نعم
عامل التشغيل الحرفي
الأمر
مدعوم
literal
نعم
تعبيرات التاريخ
الأمر
مدعوم
dayOfYear
نعم
dayOfMonth
نعم
dayOfWeek
نعم
year
نعم
month
نعم
week
نعم
hour
نعم
minute
نعم
second
نعم
millisecond
نعم
dateToString
نعم
isoDayOfWeek
نعم
isoWeek
نعم
dateFromParts
نعم
dateToParts
نعم
dateFromString
نعم
isoWeekYear
نعم
التعبيرات الشرطية
الأمر
مدعوم
cond
نعم
ifNull
نعم
switch
نعم
عامل تشغيل نوع البيانات
الأمر
مدعوم
type
نعم
التعبيرات التراكمية
الأمر
مدعوم
sum
نعم
avg
نعم
first
نعم
last
نعم
max
نعم
min
نعم
push
نعم
addToSet
نعم
stdDevPop
نعم
stdDevSamp
نعم
عامل تشغيل الدمج
الأمر
مدعوم
mergeObjects
نعم
أنواع البيانات
يدعم Azure Cosmos DB ل MongoDB المستندات المشفرة بتنسيق MongoDB BSON. ويعزز الإصدار 4.0 لواجهة برمجة التطبيقات الاستخدام الداخلي لهذا التنسيق لتحسين الأداء وتقليل التكاليف. تستفيد المستندات المكتوبة أو المحدثة من خلال نقطة نهاية تعمل ب 4.0+ من التحسين.
في سيناريو الترقية، لن تستفيد المستندات المكتوبة قبل الترقية إلى الإصدار 4.0+ من الأداء المحسن حتى يتم تحديثها عبر عملية كتابة من خلال نقطة النهاية 4.0+.
يزيد دعم المستند 16 ميغابايت من حد حجم مستنداتك من 2 ميغابايت إلى 16 ميغابايت. ينطبق هذا الحد فقط على المجموعات التي تم إنشاؤها بعد تمكين هذه الميزة. بمجرد تمكين هذه الميزة لحساب قاعدة البيانات الخاص بك، لا يمكن تعطيلها.
نوصي بتمكين إعادة المحاولة من جانب الخادم وتجنب فهارس أحرف البدل لضمان نجاح الطلبات ذات المستندات الأكبر. إذا لزم الأمر، فقد يساعد رفع وحدات طلب DB/Collection أيضا في الأداء.
الأمر
مدعوم
Double
نعم
String
نعم
Object
نعم
Array
نعم
Binary Data
نعم
ObjectId
نعم
Boolean
نعم
Date
نعم
Null
نعم
32-bit Integer (int)
نعم
Timestamp
نعم
64-bit Integer (long)
نعم
MinKey
نعم
MaxKey
نعم
Decimal128
نعم
Regular Expression
نعم
JavaScript
نعم
JavaScript (with scope)
نعم
Undefined
نعم
الفهارس وخصائص الفهرس
الفهارس
الأمر
مدعوم
Single Field Index
نعم
Compound Index
نعم
Multikey Index
نعم
Text Index
لا
2dsphere
نعم
2d Index
لا
Hashed Index
لا
خصائص الفهرس
الأمر
مدعوم
TTL
نعم
Unique
نعم
Partial
لا
Case Insensitive
لا
Sparse
لا
Background
نعم
المشغلون
العوامل المنطقية
الأمر
مدعوم
or
نعم
and
نعم
not
نعم
nor
نعم
عوامل تشغيل العناصر
الأمر
مدعوم
exists
نعم
type
نعم
عوامل تشغيل استعلام التقييم
الأمر
مدعوم
expr
نعم
jsonSchema
لا
mod
نعم
regex
نعم
text
لا (غير مدعوم، استخدم $regex بدلاً من ذلك).
where
لا
في استعلامات $regex، تسمح التعبيرات المرتكزة في اليسار بالبحث في الفهرس. ومع ذلك، يؤدي استخدام المعدّل "i" (غير الحساس لحالة الأحرف الإنجليزية) والمعدّل "m" (متعدد الأسطر) إلى فحص المجموعة في جميع التعبيرات.
عندما تكون هناك حاجة لتضمين '$' أو '|'، فمن الأفضل إنشاء استعلامات regex اثنين (أو أكثر). على سبيل المثال، بالنظر إلى الاستعلام الأصلي الآتي: find({x:{$regex: /^abc$/})، يجب تعديله على هذا النحو:
find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})
يمكن أن يستخدم الجزء الأول الفهرس لتقييد البحث في تلك المستندات بدءاً من ^abc وسيطابق الجزء الثاني الإدخالات الدقيقة. يمثل العامل الشريطي "|" وظيفة "أو" - يطابق الاستعلام find({x:{$regex: /^abc |^def/}) المستندات حيث يحمل الحقل "x" قيماً تبدأ بـ "abc" أو "def". ولاستخدام الفهرس، يوصى بتقسيم الاستعلام إلى استعلامين مختلفين مرتبطين بواسطة عامل التشغيل $or: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).
عوامل تشغيل الصفيف
الأمر
مدعوم
all
نعم
elemMatch
نعم
size
نعم
عامل تشغيل التعليق
الأمر
مدعوم
comment
نعم
عوامل تشغيل الإسقاط
الأمر
مدعوم
elemMatch
نعم
meta
لا
slice
نعم
عوامل تشغيل التحديث
عوامل تشغيل تحديث الحقول
الأمر
مدعوم
inc
نعم
mul
نعم
rename
نعم
setOnInsert
نعم
set
نعم
unset
نعم
min
نعم
max
نعم
currentDate
نعم
عوامل تشغيل تحديث الصفيف
الأمر
مدعوم
$
نعم
$[]
نعم
$[\<identifier\>]
نعم
addToSet
نعم
pop
نعم
pullAll
نعم
pull
نعم
push
نعم
pushAll
نعم
معدّلات التحديث
الأمر
مدعوم
each
نعم
slice
نعم
sort
نعم
position
نعم
عامل تشغيل تحديث معالجة البت
الأمر
مدعوم
bit
نعم
bitsAllSet
لا
bitsAnySet
لا
bitsAllClear
لا
bitsAnyClear
لا
عوامل تشغيل الجغرافية المكانية
عامل تشغيل
مدعوم
$geoWithin
نعم
$geoIntersects
نعم
$near
نعم
$nearSphere
نعم
$geometry
نعم
$minDistance
نعم
$maxDistance
نعم
$center
لا
$centerSphere
لا
$box
لا
$polygon
لا
عمليات الفرز
عند استخدام findOneAndUpdate العملية مع واجهة برمجة التطبيقات للإصدار 4.0 من MongoDB، يتم دعم عمليات الفرز على حقل واحد وحقول متعددة. كانت عمليات الفرز على حقول متعددة قيدا على البروتوكولات السلكية السابقة.
الفهرسة
تدعم واجهة برمجة التطبيقات ل MongoDB الفهارس المختلفة لتمكين الفرز على حقول متعددة، وتحسين أداء الاستعلام، وفرض التفرد.
GridFS
Azure Cosmos DB يدعم GridFS من خلال أي برنامج تشغيل لدى Mongo متوافق مع GridFS.
النسخ المتماثل
يدعم Azure Cosmos DB النسخ المتماثل التلقائي الأصلي في أدنى المستويات. وتم توسيع هذا المنطق لتحقيق زمن الانتقال المنخفض، والنسخ المتماثل العالمي كذلك. لا يدعم Azure Cosmos DB أوامر النسخ المتماثل اليدوي.
عمليات الكتابة القابلة لإعادة المحاولة
تمكن عمليات الكتابة القابلة لإعادة المحاولة برامج تشغيل MongoDB من إعادة محاولة عمليات كتابة معينة تلقائيا إذا كان هناك فشل، ولكنها تؤدي إلى متطلبات أكثر صرامة لعمليات معينة، والتي تتطابق مع متطلبات بروتوكول MongoDB. مع تمكين هذه الميزة، تتطلب عمليات التحديث، بما في ذلك عمليات الحذف، في المجموعات المقسمة تضمين مفتاح التقسيم في عامل تصفية الاستعلام أو عبارة التحديث.
على سبيل المثال، مع مجموعة مقسمة، مقسمة على المفتاح "البلد": لحذف جميع المستندات مع المدينة = "NYC" الميدانية، سيحتاج التطبيق إلى تنفيذ العملية لجميع قيم مفتاح الأجزاء (البلد) إذا تم تمكين عمليات الكتابة القابلة لإعادة المحاولة.
db.coll.deleteMany({"country": "USA", "city": "NYC"}) - النجاح
db.coll.deleteMany({"city": "NYC"}) - فشل مع الخطأ ShardKeyNotFound(61)
ملاحظة
لا تدعم عمليات الكتابة القابلة لإعادة المحاولة عمليات الكتابة المجمعة غير مرتبة في الوقت الحالي. إذا كنت ترغب في إجراء عمليات كتابة مجمعة مع تمكين عمليات الكتابة القابلة لإعادة المحاولة، فقم بإجراء عمليات كتابة مجمعة مرتبة.
لتمكين الميزة، أضف إمكانية EnableMongoRetryableWrites إلى حساب قاعدة البيانات الخاص بك. يمكن أيضا تمكين هذه الميزة في علامة تبويب الميزات في مدخل Microsoft Azure.
التقسيم
يدعم Azure Cosmos DB التقسيم التلقائي من جانب الخادم. فهو يدير إنشاء الأقسام وتعيينها وتحقيق التوازن تلقائياً. لا يدعم Azure Cosmos DB أوامر التقسيم اليدوي، ما يعني أنه ليس عليك استدعاء أوامر مثل addShard و balancerStart و moveChunk وما إلى ذلك. تحتاج فقط إلى تحديد مفتاح الجزء أثناء إنشاء الحاويات أو الاستعلام عن البيانات.
جلسات العمل
لا يدعم Azure Cosmos DB حتى الآن أوامر الجلسات من جانب الخادم.
فترة البقاء (TTL)
يدعم Azure Cosmos DB فترة البقاء (TTL) استناداً إلى الطابع الزمني للمستند. يمكن تمكين TTL للمجموعات من مدخل Microsoft Azure.
المعاملات
يتم اعتماد العمليات متعددة المستندات ضمن مجموعة غير مقسمة. المعاملات متعددة المستندات غير مدعومة عبر المجموعات أو في المجموعات المقسمة. مهلة العمليات هي 5 ثوانٍ ثابتة.
المستخدم وإدارة الدور
لا يدعم Azure Cosmos DB المستخدمين والأدوار بعد. ومع ذلك، يدعم Azure Cosmos DB التحكم في الوصول المستند إلى دور Azure (Azure RBAC) وكلمات المرور/المفاتيح للقراءة والكتابة والقراءة فقط التي يمكن الحصول عليها من خلال مدخل Microsoft Azure (صفحة سلسلة الاتصال).
مخاوف الكتابة
تعتمد بعض التطبيقات على مخاوف الكتابة التي تحدد عدد الاستجابات المطلوبة في أثناء عملية الكتابة. نظرا لكيفية معالجة Azure Cosmos DB للنسخ المتماثل في الخلفية، فإن جميع عمليات الكتابة تكون تلقائيا Quorum بشكل افتراضي. ويتم تجاهل أي مخاوف كتابة محددة بواسطة التعليمة البرمجية للعميل. تعرف على المزيد في استخدام مستويات التناسق لزيادة التوفر والأداء إلى أقصى حد.