البرنامج التعليمي: الاستعلام عن Azure Cosmos DB باستخدام واجهة برمجة التطبيقات للجدول
ينطبق على: جدول
يدعم Azure Cosmos DB for Table استعلامات OData وLINQ مقابل بيانات المفتاح/القيمة (الجدول).
تتناول هذه المقالة المهام التالية:
- الاستعلام عن البيانات باستخدام واجهة برمجة التطبيقات للجدول
تستخدم الاستعلامات في هذه المقالة الجدول People
النموذجي التالي:
مفتاح القسم | مفتاح الصف | البريد الإلكتروني | PhoneNumber |
---|---|---|---|
Harp | Walter | Walter@contoso.com | 425-555-0101 |
Smith | Ben | Ben@contoso.com | 425-555-0102 |
Smith | Jeff | Jeff@contoso.com | 425-555-0104 |
للحصول على تفاصيل حول كيفية الاستعلام باستخدام واجهة برمجة التطبيقات للجدول، راجع الاستعلام عن الجداول والكيانات.
المتطلبات الأساسية
لتشغيل هذه الاستعلامات، لا بد أن تمتلك حساب Azure Cosmos DB وأن تتوافر لديك بيانات الكيان في الحاوية. إذا لم يكن لديك حساب أو بيانات، فأكمل التشغيل السريع: Azure Cosmos DB for Table for .NET لإنشاء حساب وملء قاعدة البيانات الخاصة بك.
الاستعلام عن PartitionKey وRowKey
نظرًا إلى أن خصائص PartitionKey وRowKey تشكل المفتاح الأساسي للكيان، يمكنك استخدام البناء التالي لتعريف الكيان:
استفسار
https://<mytableendpoint>/People(PartitionKey='Harp',RowKey='Walter')
النتائج
مفتاح القسم | مفتاح الصف | البريد الإلكتروني | PhoneNumber |
---|---|---|---|
Harp | Walter | Walter@contoso.com | 425-555-0104 |
بدلاً من ذلك، يمكنك تحديد هذه الخصائص كجزء من الخيار $filter
حسبما هو موضح في القسم التالي. أسماء خصائص المفتاح والقيم الثابتة حساسة لحالة الأحرف. كل من خصائص PartitionKey وRowKey من النوع String.
الاستعلام باستخدام عامل تصفية OData
ضع هذه القواعد في الاعتبار عند إنشاء سلسلة تصفية:
- استخدم عوامل التشغيل المنطقية المعرفة بواسطة مواصفات بروتوكول OData لمقارنة الخاصية مقابل القيمة. لا يمكنك مقارنة خاصية بقيمة ديناميكية. لا بد أن يكون أحد جوانب المصطلح ثابتًا.
- يجب أن تفصل المسافات المشفرة بعنوان URL اسم الخاصية وعامل التشغيل والقيمة الثابتة. تمثل الفاصلة مسافة مشفرة بعنوان URL كما في
%20
. - جميع أجزاء سلسلة عوامل التصفية حساسة لحالة الأحرف.
- لا بد أن تكون القيمة الثابتة من نفس نوع البيانات كالخاصية حتى يتمكن عامل التصفية من إعادة النتائج الصحيحة. لمزيد من المعلومات حول أنواع الخصائص المدعومة، راجع فهم نموذج بيانات خدمة الجدول.
يرد أدناه نموذج الاستعلام الذي يوضح كيفية التصفية حسب خصائص PartitionKey والبريد الإلكتروني باستخدام OData $filter
.
استفسار
https://<mytableapi-endpoint>/People()?$filter=PartitionKey%20eq%20'Smith'%20and%20Email%20eq%20'Ben@contoso.com'
للمزيد من المعلومات حول كيفية إنشاء تعبيرات عامل التصفية لأنواع البيانات المختلفة، راجع الاستعلام عن الجداول والكيانات.
النتائج
مفتاح القسم | مفتاح الصف | البريد الإلكتروني | PhoneNumber |
---|---|---|---|
Smith | Ben | Ben@contoso.com | 425-555-0102 |
لا ترجع الاستعلامات في خصائص التاريخ والوقت أي بيانات عند تنفيذها في واجهة برمجة تطبيقات Azure Cosmos DB للجدول. بينما يخزن تخزين Azure Table قيم التاريخ مع دقة الوقت للعلامات، تستخدم واجهة برمجة التطبيقات للجدول في Azure Cosmos DB الخاصية _ts
. ترد خاصية_ts
في المستوى الثاني من التفاصيل ولا يمثل عامل تصفية OData. يقوم Azure Cosmos DB بحظر الاستعلامات على خصائص الطابع الزمني. وكحل بديل، يمكنك تعريف خاصية datetime أو نوع البيانات الطويلة وتحديد قيمة التاريخ من العميل.
الاستعلام باستخدام LINQ
يمكنك أيضًا الاستعلام باستخدام LINQ الذي يترجم إلى تعبيرات استعلام OData المطابقة. فيما يلي مثال عن كيفية إنشاء استعلامات باستخدام SDK.NET:
IQueryable<CustomerEntity> linqQuery = table.CreateQuery<CustomerEntity>()
.Where(x => x.PartitionKey == "4")
.Select(x => new CustomerEntity() { PartitionKey = x.PartitionKey, RowKey = x.RowKey, Email = x.Email });
الخطوات التالية
يمكنك الآن المتابعة إلى البرنامج التعليمي التالي لمعرفة كيفية توزيع البيانات على مستوى العالم.