مشاركة عبر


Azure Cosmos DB ل MongoDB (إصدار خادم 5.0): الميزات المدعومة وبناء الجملة

ينطبق على: MongoDB

Azure Cosmos DB هي خدمة قاعدة بيانات متعددة النماذج موزعة عالميا من Microsoft. يقدم Azure Cosmos DB واجهات برمجة تطبيقات قاعدة بيانات متعددة. يمكنك التواصل مع 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() update() داخلياdelete(). الوظائف التي تستخدم أوامر الخادم المدعومة متوافقة مع 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 ‏‏نعم‬

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

إشعار

يتم دعم المعاملات متعددة المستندات فقط ضمن مجموعة واحدة غير مقسمة. لم يتم بعد دعم العمليات متعددة المستندات عبر التجميع وعبر التجزئة في واجهة برمجة التطبيقات لقاعدة بيانات MongoDB.

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

تدفق التجميع

يدعم Azure Cosmos DB ل MongoDB أوامر التجميع التالية.

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

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

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

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

إشعار

$lookup لا يدعم التجميع بعد ميزة الاستعلامات الفرعية غير المترابطة التي تم تقديمها في إصدار الخادم 3.6. إذا حاولت استخدام $lookup عامل التشغيل مع الحقلين let و pipeline ، فستظهر رسالة خطأ تشير إلى أنه let غير معتمد .

التعبيرات المنطقية

الأمر مدعوم
and ‏‏نعم‬
not نعم
or ‏‏نعم‬

تعبيرات التحويل

الأمر مدعوم
convert ‏‏نعم‬
toBool نعم
toDate نعم
toDecimal نعم
toDouble نعم
toInt نعم
toLong نعم
toObjectId نعم
toString ‏‏نعم‬

تعبيرات Set

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

تعبيرات علم المثلثات

الأمر مدعوم
acos ‏‏نعم‬
acosh نعم
asin نعم
asinh نعم
atan نعم
atan2 نعم
atanh نعم
cos نعم
cosh نعم
degreesToRadians نعم
radiansToDegrees نعم
sin نعم
sinh نعم
tan نعم
tanh ‏‏نعم‬

تعبيرات السلسلة

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

متغيرات النظام

الأمر مدعوم
$$CLUSTERTIME ‏‏نعم‬
$$CURRENT نعم
$$DESCEND نعم
$$KEEP نعم
$$NOW نعم
$$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+ من الأداء المحسن حتى يتم تحديثها عبر عملية كتابة من خلال نقطة النهاية 4.0+.

يرفع دعم المستند بحجم 16 ميغابايت حد حجم مستنداتك من 2 ميغابايت إلى 16 ميغابايت. ينطبق هذا الحد فقط على المجموعات التي تم إنشاؤها بعد تمكين هذه الميزة. عند تمكين هذه الميزة لحساب قاعدة البيانات الخاص بك، لا يمكن تعطيلها.

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

نوصي بتمكين إعادة المحاولة من جانب الخادم وتجنب استخدام فهارس أحرف البدل لضمان نجاح الطلبات في المستندات الأكبر. قد يساعد رفع قاعدة البيانات أو وحدات طلب المجموعة أيضا في الأداء.

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

الفهارس وخصائص الفهرس

يدعم Azure Cosmos DB ل MongoDB أوامر الفهرس التالية وخصائص الفهرس.

الفهارس

الأمر مدعوم
Single Field Index ‏‏نعم‬
Compound Index نعم
Multikey Index نعم
Text Index لا
2dsphere نعم
2d Index لا
Hashed Index لا

خصائص الفهرس

الأمر مدعوم
TTL ‏‏نعم‬
Unique ‏‏نعم‬
Partial معتمد فقط للفهرسات الفريدة
Case Insensitive لا
Sparse لا
Background ‏‏نعم‬

العوامل

يدعم Azure Cosmos DB ل MongoDB عوامل التشغيل التالية.

العوامل المنطقية

الأمر مدعوم
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 على حقل واحد. عمليات الفرز على حقول متعددة غير مدعومة.

الفهرسة

تدعم واجهة برمجة التطبيقات ل MongoDB فهارس مختلفة لتمكين الفرز في حقول متعددة، وتحسين أداء الاستعلام، وفرض التفرد.

التشفير على مستوى الحقل من جانب العميل

تشفير الحقول على مستوى العميل هو ميزة برنامج تشغيل ومتوافق مع واجهة برمجة التطبيقات لقاعدة بيانات MongoDB. يتم دعم التشفير الصريح، حيث يقوم برنامج التشغيل بتشفير كل حقل بشكل صريح عند كتابته. التشفير التلقائي غير مدعوم. يتم دعم فك التشفير الصريح وفك التشفير التلقائي.

mongocryptd لا يجب تشغيل لأنه ليس هناك حاجة لتنفيذ أي من العمليات المدعومة.

GridFS

Azure Cosmos DB يدعم GridFS من خلال أي برنامج تشغيل لدى Mongo متوافق مع GridFS.

النسخ المتماثل

يدعم Azure Cosmos DB النسخ المتماثل التلقائي الأصلي في أدنى المستويات. يتم توسيع هذا المنطق أيضا لتحقيق زمن انتقال منخفض، والنسخ المتماثل العمومي. لا يدعم Azure Cosmos DB أوامر النسخ المتماثل اليدوي.

عمليات الكتابة القابلة لإعادة المحاولة

تمكن ميزة عمليات الكتابة القابلة لإعادة المحاولة برامج تشغيل MongoDB من إعادة محاولة بعض عمليات الكتابة تلقائيا. ينتج عن الميزة متطلبات أكثر صرامة لعمليات معينة، والتي تطابق متطلبات بروتوكول MongoDB. مع تمكين هذه الميزة، تتطلب عمليات التحديث، بما في ذلك عمليات الحذف، في المجموعات المقسمة تضمين مفتاح القطع في عامل تصفية الاستعلام أو عبارة التحديث.

على سبيل المثال، مع مجموعة مقسمة مقسمة على المفتاح، لحذف جميع المستندات التي تحتوي على "country" الحقل "city" = "NYC"، يحتاج التطبيق إلى تنفيذ العملية لجميع قيم مفتاح الأجزاء ("country") إذا تم تمكين ميزة الكتابة القابلة لإعادة المحاولة.

  • 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 حتى الآن أوامر جلسات العمل من جانب الخادم.

مدة البقاء

يدعم Azure Cosmos DB مدة البقاء (TTL) التي تستند إلى الطابع الزمني للمستند. يمكنك تمكين TTL لمجموعة في مدخل Microsoft Azure.

TTL مخصص

توفر هذه الميزة القدرة على تعيين TTL مخصص على أي حقل واحد في مجموعة.

في مجموعة تم تمكين TTL عليها في حقل:

  • الأنواع المقبولة هي نوع بيانات BSON والأنواع الرقمية (عدد صحيح أو طويل أو مزدوج)، والتي سيتم تفسيرها على أنها طابع زمني Unix بالمللي ثانية لتحديد انتهاء الصلاحية.

  • إذا كان حقل TTL عبارة عن صفيف، اعتبار أصغر عنصر من الصفيف من نوع مقبول لانتهاء صلاحية المستند.

  • إذا كان الحقل TTL مفقودا من مستند، فلن تنتهي صلاحية المستند.

  • إذا لم يكن حقل TTL من النوع المقبول، فلن تنتهي صلاحية المستند.

قيود TTL مخصص

  • يمكن تعيين TTL على حقل واحد فقط في مجموعة.

  • مع تعيين حقل TTL مخصص، \_ts لا يمكن استخدام الحقل لانتهاء صلاحية المستند.

  • لا يمكنك استخدام \_ts الحقل بالإضافة إلى ذلك.

التكوين

يمكنك تمكين TTL مخصص عن طريق تحديث إمكانية EnableTtlOnCustomPath الحساب. تعرف على كيفية تكوين القدرات.

إعداد TTL

لإعداد TTL، قم بتشغيل هذا الأمر: db.coll.createIndex({"YOUR_CUSTOM_TTL_FIELD":1}, {expireAfterSeconds: 10})

الحركات

يتم اعتماد المعاملات متعددة المستندات ضمن مجموعة غير مقسمة. المعاملات متعددة المستندات غير مدعومة عبر المجموعات أو في المجموعات المقسمة. مهلة العمليات هي 5 ثوانٍ ثابتة.

إدارة المستخدمين والأدوار

لا يدعم Azure Cosmos DB المستخدمين والأدوار بعد. ومع ذلك، يدعم Azure Cosmos DB التحكم في الوصول المستند إلى الدور Azure (Azure RBAC) وكلمات المرور والمفاتيح للقراءة والكتابة والقراءة فقط التي يمكن الحصول عليها من خلال مدخل Microsoft Azure (في صفحة سلاسل الاتصال).

مخاوف الكتابة

تعتمد بعض التطبيقات على مشكلة الكتابة، والتي تحدد عدد الاستجابات المطلوبة أثناء عملية الكتابة. نظرا لكيفية معالجة Azure Cosmos DB للنسخ المتماثل في الخلفية، تكون جميع عمليات الكتابة حصة تلقائيا بشكل افتراضي. يتم تجاهل أي مشكلة كتابة تم تحديدها بواسطة التعليمات البرمجية للعميل. تعرف على كيفية استخدام مستويات التناسق لتحقيق أقصى قدر من التوفر والأداء.

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

  • تعرف على كيفية استخدام Studio 3T مع Azure Cosmos DB ل MongoDB.
  • تعرف على كيفية استخدام Robo 3T مع Azure Cosmos DB ل MongoDB.
  • استكشف نماذج MongoDB باستخدام Azure Cosmos DB ل MongoDB.
  • هل تحاول القيام بتخطيط السعة للترحيل إلى Azure Cosmos DB؟ يمكنك استخدام معلومات حول نظام مجموعة قاعدة البيانات الموجودة لديك لـ تخطيط السعة.