عبارة SELECT (استعلام NoSQL)
ينطبق على: NoSQL
يتكون كل استعلام من SELECT
عبارة واختياريا FROM
وعبارات WHERE
، وفقا لمعايير ANSI SQL. عادةً ما يتم تعداد المصدر في جملة FROM
، وتطبق عبارة WHERE
عامل تصفية على المصدر لاسترداد مجموعة فرعية من عناصر JSON. ثم تعرض العبارة SELECT
قيم JSON المطلوبة في قائمة التحديد.
بناء الجملة
SELECT <select_specification>
<select_specification> ::=
'*'
| [DISTINCT] <object_property_list>
| [DISTINCT] VALUE <scalar_expression> [[ AS ] value_alias]
<object_property_list> ::=
{ <scalar_expression> [ [ AS ] property_alias ] } [ ,...n ]
الوسيطات
الوصف | |
---|---|
<select_specification> |
الخصائص أو القيمة المراد تحديدها لمجموعة النتائج. |
'*' |
تعين أنه يجب استرداد القيمة دون إجراء أي تغييرات. على وجه التحديد إذا كانت القيمة المعالجة كائنا، يتم استرداد كافة الخصائص. |
<object_property_list> |
تحديد قائمة الخصائص التي سيتم استردادها. كل قيمة تم إرجاعها هي كائن مع الخصائص المحددة. |
VALUE |
تعين أنه يجب استرداد قيمة JSON بدلاً من عنصر JSON الكامل. هذه الوسيطة، على عكس <property_list> لا تقوم بتضمين القيمة المتوقعة في كائن. |
DISTINCT |
يجب إزالة التكرارات من الخصائص المتوقعة. |
<scalar_expression> |
التعبير الذي يمثل القيمة المراد حسابها. لمزيد من المعلومات، راجع قسم التعبيرات العددية للحصول على التفاصيل. |
الأمثلة
يحدد هذا المثال الأول قيمتي سلسلة ثابتة ويعيد صفيفا مع كائن واحد يحتوي على كلتا القيمتين. نظرا لأن القيم غير مسماة، يتم استخدام رقم متسلسل تم إنشاؤه لتسمية حقل json المكافئ.
SELECT "Adventure", "Works"
[
{
"$1": "Adventure",
"$2": "Works"
}
]
في هذا المثال التالي، يتم استخدام إسقاط JSON لضبط البنية الدقيقة وأسماء الحقول لكائن JSON الناتج. هنا، يتم إنشاء كائن JSON مع الحقول المسماة department
و team
. لا يزال كائن JSON الخارجي غير مسمى، لذلك يتم استخدام رقم تم إنشاؤه ($1
) لتسمية هذا الحقل.
SELECT {
department: "Sales",
team: "Field sales"
}
[
{
"$1": {
"department": "Sales",
"team": "Field sales"
}
}
]
يوضح هذا المثال تبسيط مجموعة النتائج من المثال السابق لتبسيط التحليل. VALUE
يتم استخدام الكلمة الأساسية هنا لمنع التفاف النتائج في كائن JSON آخر.
SELECT VALUE {
department: "Sales",
team: "Field sales"
}
[
{
"department": "Sales",
"team": "Field sales"
}
]
في هذا المثال، VALUE
يتم استخدام الكلمة الأساسية مع سلسلة ثابتة لإنشاء صفيف من السلاسل كنتيجة لذلك.
SELECT VALUE "Sales"
[
"Sales"
]
في هذا المثال الأخير، افترض أن هناك حاوية تحتوي على عنصرين مع حقول مختلفة من أنواع بيانات مختلفة.
[
{
"team": "Field sales",
"identity": {
"name": "Parker McLean"
},
"contact": [
"206-555-0147"
]
},
{
"team": "Field sales",
"identity": {
"name": "Beibit Shayakhmet"
},
"contact": [
"206-555-0178"
]
}
]
يستخدم استعلام المثال النهائي هذا مزيجا SELECT
من عبارة والكلمة VALUE
الأساسية وعبارة FROM
وإسقاط JSON لتنفيذ استعلام مشترك مع تحويل النتائج إلى كائن JSON للعميل لتحليله.
SELECT VALUE {
name: e.identity.name,
team: e.team,
phone: e.contact[0]
}
FROM
employees e
[
{
"name": "Parker McLean",
"team": "Field sales",
"phone": "206-555-0147"
},
{
"name": "Beibit Shayakhmet",
"team": "Field sales",
"phone": "206-555-0178"
}
]
الملاحظات
SELECT *
يكون بناء الجملة صالحا فقط إذاFROM
أعلنت العبارة اسما مستعارا واحدا بالضبط.SELECT *
يوفر إسقاط الهوية، والتي يمكن أن تكون مفيدة إذا لم تكن هناك حاجة إلى إسقاط.SELECT *
صالح فقط إذاFROM
تم تحديد عبارة وتقديم مصدر إدخال واحد فقط.- كلاهما
SELECT <select_list>
وSELECT *
هما "السكر المركب" ويمكن التعبير عنهما بدلا من ذلك باستخدام عبارات بسيطةSELECT
:SELECT * FROM ... AS from_alias ...
يعادل:SELECT from_alias FROM ... AS from_alias ...
.SELECT <expr1> AS p1, <expr2> AS p2,..., <exprN> AS pN [other clauses...]
يعادل:SELECT VALUE { p1: <expr1>, p2: <expr2>, ..., pN: <exprN> }[other clauses...]
.