مشاركة عبر


الاستعلام عن البيانات باستخدام Azure Cosmos DB ل MongoDB

ينطبق على: مونغو دي بي

مهم

هل تتطلع إلى ترحيل تطبيق MongoDB موجود أو استخدام ميزات لغة استعلام MongoDB (MQL)؟ فكر في Azure DocumentDB.

هل تبحث عن حل قاعدة بيانات للسيناريوهات عالية النطاق مع اتفاقية مستوى خدمة التوفر (SLA) 99.999% والتحجيم التلقائي الفوري وتجاوز الفشل التلقائي عبر مناطق متعددة؟ ضع في اعتبارك Azure Cosmos DB ل NoSQL.

يدعم Azure Cosmos DB ل MongoDB استعلامات MongoDB.

تتناول هذه المقالة المهام التالية:

  • الاستعلام عن البيانات المخزنة في قاعدة بيانات Azure Cosmos DB باستخدام MongoDB shell

يمكنك البدء باستخدام الأمثلة الواردة في هذه المقالة.

نموذج المستند

تستخدم الاستعلامات في هذه المقالة المستند النموذجي التالي.

{
  "id": "WakefieldFamily",
  "parents": [
      { "familyName": "Wakefield", "givenName": "Robin" },
      { "familyName": "Miller", "givenName": "Ben" }
  ],
  "children": [
      {
        "familyName": "Merriam", 
        "givenName": "Jesse", 
        "gender": "female", "grade": 1,
        "pets": [
            { "givenName": "Goofy" },
            { "givenName": "Shadow" }
        ]
      },
      { 
        "familyName": "Miller", 
         "givenName": "Lisa", 
         "gender": "female", 
         "grade": 8 }
  ],
  "address": { "state": "NY", "county": "Manhattan", "city": "NY" },
  "creationDate": 1431620462,
  "isRegistered": false
}

المثال 1 على الاستعلام

بالنظر إلى نموذج مستند العائلة، يقوم الاستعلام التالي بإرجاع المستندات حيث يتطابق idWakefieldFamilyالحقل مع .

الاستعلام:

db.families.find({ id: "WakefieldFamily"})

النتائج:

{
    "_id": "ObjectId(\"58f65e1198f3a12c7090e68c\")",
    "id": "WakefieldFamily",
    "parents": [
      {
        "familyName": "Wakefield",
        "givenName": "Robin"
      },
      {
        "familyName": "Miller",
        "givenName": "Ben"
      }
    ],
    "children": [
      {
        "familyName": "Merriam",
        "givenName": "Jesse",
        "gender": "female",
        "grade": 1,
        "pets": [
          { "givenName": "Goofy" },
          { "givenName": "Shadow" }
        ]
      },
      {
        "familyName": "Miller",
        "givenName": "Lisa",
        "gender": "female",
        "grade": 8
      }
    ],
    "address": {
      "state": "NY",
      "county": "Manhattan",
      "city": "NY"
    },
    "creationDate": 1431620462,
    "isRegistered": false
}

نموذج استعلام 2

يرجع الاستعلام التالي جميع الأطفال في العائلة.

الاستعلام:

db.families.find( { id: "WakefieldFamily" }, { children: true } )

النتائج:

{
    "_id": "ObjectId("58f65e1198f3a12c7090e68c")",
    "children": [
      {
        "familyName": "Merriam",
        "givenName": "Jesse",
        "gender": "female",
        "grade": 1,
        "pets": [
          { "givenName": "Goofy" },
          { "givenName": "Shadow" }
        ]
      },
      {
        "familyName": "Miller",
        "givenName": "Lisa",
        "gender": "female",
        "grade": 8
      }
    ]
}

نموذج استعلام 3

الاستعلام التالي بإرجاع كافة العائلات المسجلة.

الاستعلام:

db.families.find( { "isRegistered" : true })

النتائج:

لم يتم إرجاع أي مستند.

نموذج استعلام 4

يقوم الاستعلام التالي بإرجاع كافة العائلات غير المسجلة.

الاستعلام:

db.families.find( { "isRegistered" : false })

النتائج:

{
    "_id": ObjectId("58f65e1198f3a12c7090e68c"),
    "id": "WakefieldFamily",
    "parents": [{
        "familyName": "Wakefield",
        "givenName": "Robin"
    }, {
        "familyName": "Miller",
        "givenName": "Ben"
    }],
    "children": [{
        "familyName": "Merriam",
        "givenName": "Jesse",
        "gender": "female",
        "grade": 1,
        "pets": [{
            "givenName": "Goofy"
        }, {
            "givenName": "Shadow"
        }]
    }, {
        "familyName": "Miller",
        "givenName": "Lisa",
        "gender": "female",
        "grade": 8
    }],
    "address": {
        "state": "NY",
        "county": "Manhattan",
        "city": "NY"
    },
    "creationDate": 1431620462,
    "isRegistered": false
}

نموذج استعلام 5

يرجع الاستعلام التالي جميع العائلات غير المسجلة والولاية هي NY.

الاستعلام:

db.families.find( { "isRegistered" : false, "address.state" : "NY" })

النتائج:

{
    "_id": ObjectId("58f65e1198f3a12c7090e68c"),
    "id": "WakefieldFamily",
    "parents": [{
        "familyName": "Wakefield",
        "givenName": "Robin"
    }, {
        "familyName": "Miller",
        "givenName": "Ben"
    }],
    "children": [{
        "familyName": "Merriam",
        "givenName": "Jesse",
        "gender": "female",
        "grade": 1,
        "pets": [{
            "givenName": "Goofy"
        }, {
            "givenName": "Shadow"
        }]
    }, {
        "familyName": "Miller",
        "givenName": "Lisa",
        "gender": "female",
        "grade": 8
    }],
    "address": {
        "state": "NY",
        "county": "Manhattan",
        "city": "NY"
    },
    "creationDate": 1431620462,
    "isRegistered": false
}

نموذج استعلام 6

يُعيد الاستعلام التالي كافة العائلات حيث تقل أعمار الأطفال عن 8.

الاستعلام:

db.families.find( { children : { $elemMatch: { grade : 8 }} } )

النتائج:

{
    "_id": ObjectId("58f65e1198f3a12c7090e68c"),
    "id": "WakefieldFamily",
    "parents": [{
        "familyName": "Wakefield",
        "givenName": "Robin"
    }, {
        "familyName": "Miller",
        "givenName": "Ben"
    }],
    "children": [{
        "familyName": "Merriam",
        "givenName": "Jesse",
        "gender": "female",
        "grade": 1,
        "pets": [{
            "givenName": "Goofy"
        }, {
            "givenName": "Shadow"
        }]
    }, {
        "familyName": "Miller",
        "givenName": "Lisa",
        "gender": "female",
        "grade": 8
    }],
    "address": {
        "state": "NY",
        "county": "Manhattan",
        "city": "NY"
    },
    "creationDate": 1431620462,
    "isRegistered": false
}

نموذج استعلام 7

يُعيد الاستعلام التالي كافة العائلات حيث يبلغ حجم مصفوفة الأطفال 3.

الاستعلام:

db.Family.find( {children: { $size:3} } )

النتائج:

ولم يتم إرجاع أي نتائج لأنه لا توجد أسر تضم أكثر من طفلين. فقط عندما تكون قيمة المعلمة ينجح 2 هذا الاستعلام ويعيد المستند الكامل.

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

في هذا البرنامج التعليمي، قد نفذت المهام التالية:

  • تعلم كيفية الاستعلام باستخدام Azure Cosmos DB ل MongoDB

يمكنك الآن المتابعة إلى البرنامج التعليمي التالي لمعرفة كيفية توزيع البيانات على مستوى العالم.