SELECT záradék (NoSQL-lekérdezés)
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Minden lekérdezés egy SELECT
kikötésből és opcionálisan FROM
WHERE
, valamint az ANSI SQL-szabványonkénti záradékokból áll. A záradék forrása FROM
általában enumerálva van, és a WHERE
záradék szűrőt alkalmaz a forrásra a JSON-elemek egy részhalmazának lekéréséhez. A SELECT
záradék ezután a kiválasztott listában megjeleníti a kért JSON-értékeket.
Syntax
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 ]
Argumentumok
Leírás | |
---|---|
<select_specification> |
Az eredményhalmazhoz kijelölendő tulajdonságok vagy értékek. |
'*' |
Megadja, hogy az értéket módosítás nélkül kell lekérni. Pontosabban, ha a feldolgozott érték egy objektum, a rendszer minden tulajdonságot lekér. |
<object_property_list> |
Megadja a lekérendő tulajdonságok listáját. Minden visszaadott érték egy objektum, amely a megadott tulajdonságokkal rendelkezik. |
VALUE |
Megadja, hogy a JSON-értéket a teljes JSON-objektum helyett kell lekérni. Ez az argumentum– ellentétben <property_list> a tervezett érték objektumba való befuttatásával – nem. |
DISTINCT |
Megadja, hogy a tervezett tulajdonságok duplikált példányait el kell távolítani. |
<scalar_expression> |
A kiszámítandó értéket képviselő kifejezés. További információkért tekintse meg a skaláris kifejezések szakaszt. |
Példák
Ez az első példa két statikus sztringértéket jelöl ki, és egy tömböt ad vissza egyetlen, mindkét értéket tartalmazó objektummal. Mivel az értékek névtelenek, a rendszer szekvenciálisan generált számot használ az egyenértékű JSON-mező elnevezéséhez.
SELECT "Adventure", "Works"
[
{
"$1": "Adventure",
"$2": "Works"
}
]
Ebben a következő példában a JSON-kivetítéssel finomhangoljuk az eredményül kapott JSON-objektum pontos szerkezetét és mezőnevét. Itt egy JSON-objektum jön létre nevesített és department
team
. A külső JSON-objektum továbbra is névtelen, ezért a mező elnevezéséhez egy generált szám ($1
) használatos.
SELECT {
department: "Sales",
team: "Field sales"
}
[
{
"$1": {
"department": "Sales",
"team": "Field sales"
}
}
]
Ez a példa azt szemlélteti, hogy az elemzés egyszerűsítése érdekében az előző példában szereplő eredményhalmazt elsimítjuk. A VALUE
kulcsszó itt arra szolgál, hogy megakadályozza az eredmények egy másik JSON-objektumba való körbefuttatását.
SELECT VALUE {
department: "Sales",
team: "Field sales"
}
[
{
"department": "Sales",
"team": "Field sales"
}
]
Ebben a példában a VALUE
kulcsszó egy statikus sztringgel együtt jön létre sztringtömbként.
SELECT VALUE "Sales"
[
"Sales"
]
Ebben az utolsó példában tegyük fel, hogy van egy tároló, amely két különböző adattípusú mezővel rendelkezik.
[
{
"team": "Field sales",
"identity": {
"name": "Parker McLean"
},
"contact": [
"206-555-0147"
]
},
{
"team": "Field sales",
"identity": {
"name": "Beibit Shayakhmet"
},
"contact": [
"206-555-0178"
]
}
]
Ez az utolsó példa lekérdezés egy SELECT
záradék, a VALUE
kulcsszó, a FROM
záradék és a JSON-előrejelzés kombinációjával hajt végre egy közös lekérdezést az ügyfél JSON-objektummá átalakított eredményeivel az elemzéshez.
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"
}
]
Megjegyzések
- A
SELECT *
szintaxis csak akkor érvényes, haFROM
a záradék pontosan egy aliast deklarált.SELECT *
identitásvetítést biztosít, amely akkor lehet hasznos, ha nincs szükség kivetítésre.SELECT *
csak akkor érvényes, haFROM
a záradék meg van adva, és csak egyetlen bemeneti forrást vezet be. SELECT *
MindkettőSELECT <select_list>
"szintaktikus cukor", és egyszerűSELECT
állításokkal is kifejezhető:SELECT * FROM ... AS from_alias ...
a következőnek felel meg:SELECT from_alias FROM ... AS from_alias ...
.SELECT <expr1> AS p1, <expr2> AS p2,..., <exprN> AS pN [other clauses...]
a következőnek felel meg:SELECT VALUE { p1: <expr1>, p2: <expr2>, ..., pN: <exprN> }[other clauses...]
.