Azure Cosmos DB ل MongoDB (الإصدار 3.6): الميزات المدعومة وبناء الجملة
مقالة
ينطبق على: MongoDB
Azure Cosmos DB هي خدمة قواعد بيانات متعددة النماذج موزعة عالمياً من Microsoft. يمكنك التواصل مع Azure Cosmos DB ل MongoDB باستخدام أي من برامج تشغيل عميل MongoDB مفتوحة المصدر. يتيح Azure Cosmos DB ل MongoDB استخدام برامج تشغيل العميل الحالية من خلال الالتزام ببروتوكول MongoDB السلكي.
باستخدام Azure Cosmos DB ل MongoDB، يمكنك الاستمتاع بفوائد MongoDB التي اعتدت عليها، مع جميع قدرات المؤسسة التي يوفرها Azure Cosmos DB: التوزيع العالمي، والتقسيم التلقائي، وضمانات التوفر وزمن الانتقال، والتشفير في حالة الراحة، والنسخ الاحتياطية، وأكثر من ذلك بكثير.
إشعار
لا يحتوي الإصدار 3.6 من Azure Cosmos DB ل MongoDB على خطط حالية لانتهاء العمر الافتراضي (EOL). الحد الأدنى لإشعار فترة الصلاحية المستقبلية هو ثلاث سنوات.
دعم البروتوكول
يتوافق Azure Cosmos DB ل MongoDB مع إصدار خادم MongoDB 3.6 افتراضيا للحسابات الجديدة. يتم سرد عوامل التشغيل المعتمدة وأي قيود أو استثناءات أدناه. يجب أن يكون أي برنامج تشغيل عميل يفهم هذه البروتوكولات قادرا على الاتصال ب Azure Cosmos DB ل MongoDB. عند إنشاء واجهة برمجة تطبيقات Azure Cosmos DB لحسابات MongoDB، يحتوي الإصدار 3.6 من الحساب على نقطة النهاية بالتنسيق *.mongo.cosmos.azure.com بينما يحتوي إصدار 3.2 من الحساب على نقطة النهاية بالتنسيق *.documents.azure.com.
دعم لغة الاستعلام
يوفر Azure Cosmos DB ل MongoDB دعما شاملا لبنى لغة استعلام MongoDB. تعرض المقاطع التالية قائمة مفصلة بعمليات الخادم، والمشغلين، والمراحل، والأوامر، والخيارات التي يدعمها Azure Cosmos DB حاليًا.
إشعار
يسرد هذا المقال أوامر الخادم المعتمدة فقط ويستبعد وظائف التضمين من جانب العميل. وظائف التضمين من جانب العميل مثل deleteMany() وupdateMany() تستخدم داخليًّا أوامر الخادم delete() وupdate(). الوظائف التي تستخدم أوامر الخادم المدعومة متوافقة مع Azure Cosmos DB ل MongoDB.
أوامر قاعدة البيانات
يدعم Azure Cosmos DB ل MongoDB أوامر قاعدة البيانات التالية:
لا يدعم $lookup بعد ميزة الاستعلامات الفرعية غير المترابطة المقدمة في إصدار الخادم 3.6. يمكنك تلقي خطأ مع رسالة تشتمل على let is not supported إذا حاولت استخدام عامل التشغيل $lookup مع الحقول let وpipeline.
التعبيرات المنطقية
الأمر
مدعوم
and
نعم
not
نعم
or
نعم
تعبيرات Set
الأمر
مدعوم
setEquals
نعم
setIntersection
نعم
setUnion
نعم
setDifference
نعم
setIsSubset
نعم
anyElementTrue
نعم
allElementsTrue
نعم
تعبيرات المقارنة
إشعار
لا يدعم API لـ 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
نعم
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
نعم
أنواع البيانات
الأمر
مدعوم
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". لاستخدام الفهرس، يوصى بتقسيم الاستعلام إلى استعلامين مختلفين مرتبطين بواسطة $ أو عامل التشغيل: 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 في حقول متعددة غير مدعومة.
الفهرسة
تدعم واجهة برمجة التطبيقات ل MongoDB فهارس مختلفة لتمكين الفرز في حقول متعددة، وتحسين أداء الاستعلام، وفرض التفرد.
GridFS
Azure Cosmos DB يدعم GridFS من خلال أي برنامج تشغيل لدى MongoDB متوافق مع GridFS.
النسخ المتماثل
يدعم Azure Cosmos DB النسخ المتماثل التلقائي الأصلي في أدنى المستويات. وتم توسيع هذا المنطق لتحقيق زمن الانتقال المنخفض، والنسخ المتماثل العالمي كذلك. لا يدعم Azure Cosmos DB أوامر النسخ المتماثل اليدوي.
عمليات الكتابة القابلة لإعادة المحاولة
لا يدعم Azure Cosmos DB حتى الآن عمليات الكتابة القابلة لإعادة المحاولة. يجب إضافة برامج تشغيل العميل retryWrites=false إلى سلسلة الاتصال الخاصة بهم.
التقسيم
يدعم Azure Cosmos DB التقسيم التلقائي من جانب الخادم. فهو يدير إنشاء الأقسام وتعيينها وتحقيق التوازن تلقائيًا. لا يدعم Azure Cosmos DB أوامر التقسيم اليدوي، مما يعني أنك لست مضطرا إلى استدعاء أوامر مثل addShard و balancerStart و moveChunk وما إلى ذلك. تحتاج فقط إلى تحديد مفتاح الجزء أثناء إنشاء الحاويات أو الاستعلام عن البيانات.
جلسات العمل
لا يدعم Azure Cosmos DB حتى الآن أوامر جلسات العمل من جانب الخادم.
فترة البقاء (TTL)
يدعم Azure Cosmos DB فترة البقاء (TTL) استنادًا إلى الطابع الزمني للمستند. يمكن تمكين TTL للمجموعات من بوابة Azure.
المستخدم وإدارة الدور
لا يدعم Azure Cosmos DB المستخدمين والأدوار بعد. ومع ذلك، فهو يدعم التحكم في الوصول المستند إلى الدور (Azure RBAC) وكلمات المرور/المفاتيح المخصصة للقراءة والكتابة وللقراءة فقط التي يمكن الحصول عليها من خلال بوابة Azure.
مخاوف الكتابة
تعتمد بعض التطبيقات على مخاوف الكتابة التي تحدد عدد الاستجابات المطلوبة في أثناء عملية الكتابة. نظرًا لكيفية تعامل Azure Cosmos DB مع النسخ المتماثل، تكون كافة عمليات الكتابة تلقائيًا هي النصاب ذو الأغلبية بشكل افتراضي عند استخدام تناسق قوي. ويتم تجاهل أي مخاوف كتابة محددة بواسطة التعليمات البرمجية للعميل. لمعرفة المزيد، انظر مقالاستخدام مستويات التناسق لزيادة التوفر والأداء إلى أقصى حد.