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 أوامر قاعدة البيانات التالية:

أوامر عملية الاستعلام والكتابة

الأمر مدعوم
change streams نعم
delete نعم
eval لا
find نعم
findAndModify نعم
getLastError نعم
getMore نعم
getPrevError لا
insert نعم
parallelCollectionScan لا
resetError لا
update نعم

أوامر المعاملة

الأمر مدعوم
abortTransaction نعم
commitTransaction نعم

أوامر المصادقة

الأمر مدعوم
authenticate نعم
getnonce نعم
logout نعم

أوامر الإدارة

الأمر مدعوم
cloneCollectionAsCapped لا
collMod لا
connectionStatus لا
convertToCapped لا
copydb لا
create نعم
createIndexes نعم
currentOp نعم
drop نعم
dropDatabase نعم
dropIndexes نعم
filemd5 نعم
killCursors نعم
killOp لا
listCollections نعم
listDatabases نعم
listIndexes نعم
reIndex نعم
renameCollection لا

Diagnostics commands

الأمر مدعوم
buildInfo نعم
collStats نعم
connPoolStats لا
connectionStatus لا
dataSize لا
dbHash لا
dbStats نعم
explain نعم
features لا
hostInfo نعم
listDatabases نعم
listCommands لا
profiler لا
serverStatus لا
top لا
whatsmyuri نعم

تدفق التجميع

أوامر التجميع

الأمر مدعوم
aggregate نعم
count نعم
distinct نعم
mapReduce لا

مراحل التجميع

الأمر مدعوم
addFields نعم
bucket لا
bucketAuto لا
changeStream نعم
collStats لا
count نعم
currentOp لا
facet نعم
geoNear نعم
graphLookup نعم
group نعم
indexStats لا
limit نعم
listLocalSessions لا
listSessions لا
lookup جزئي
match نعم
out نعم
project نعم
redact نعم
replaceRoot نعم
replaceWith لا
sample نعم
skip نعم
sort نعم
sortByCount نعم
unwind نعم

ملاحظة

لا يدعم $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 ميغابايت. ينطبق هذا الحد فقط على المجموعات التي تم إنشاؤها بعد تمكين هذه الميزة. بمجرد تمكين هذه الميزة لحساب قاعدة البيانات الخاص بك، لا يمكن تعطيلها.

يمكن تمكين 16 ميغابايت في علامة تبويب الميزات في مدخل Microsoft Azure أو برمجيا عن طريق إضافة إمكانية "EnableMongo16MBDocumentSupport".

نوصي بتمكين إعادة المحاولة من جانب الخادم وتجنب فهارس أحرف البدل لضمان نجاح الطلبات ذات المستندات الأكبر. إذا لزم الأمر، فقد يساعد رفع وحدات طلب 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 بشكل افتراضي. ويتم تجاهل أي مخاوف كتابة محددة بواسطة التعليمة البرمجية للعميل. تعرف على المزيد في استخدام مستويات التناسق لزيادة التوفر والأداء إلى أقصى حد.

الخطوات التالية