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

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

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

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

الأمر مدعوم
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 ‏‏نعم‬

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

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