SELECT záradék (NoSQL-lekérdezés)
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Minden lekérdezés egy SELECT
záradékból, opcionálisan FROM
és WHERE
záradékokból áll ansi SQL-szabványok szerint. A záradékban szereplő FROM
forrás általában enumerálva van, és a WHERE
záradék egy 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.
Szintaxis
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
Description | |
---|---|
<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> |
Meghatározza 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 le kell kérni. Ez az argumentum, ellentétben <property_list> a nem egy objektumban lévő előrejelzett értékkel. |
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ót a skaláris kifejezések szakaszában talál. |
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-leképezéssel finomhangoljuk az eredményül kapott JSON-objektum pontos szerkezetét és mezőnevét. Itt egy JSON-objektum jön létre a és team
nevű department
mezőkkel. A külső JSON-objektum továbbra is névtelen, ezért a mező elnevezéséhez generált számot ($1
) használ a rendszer.
SELECT {
department: "Sales",
team: "Field sales"
}
[
{
"$1": {
"department": "Sales",
"team": "Field sales"
}
}
]
Ez a példa az előző példában szereplő eredményhalmaz simítását mutatja be az elemzés egyszerűsítése érdekében. 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ót egy statikus sztringgel együtt használjuk a sztringek tömbjének létrehozásához.
SELECT VALUE "Sales"
[
"Sales"
]
Ebben az utolsó példában tegyük fel, hogy van egy tároló két különböző adattípusú mezővel rendelkező elemet tartalmazó tárolóval.
[
{
"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éldaként szolgáló lekérdezés egy SELECT
záradék, egy VALUE
kulcsszó, egy FROM
záradék és egy JSON-vetület kombinációját használja egy közös lekérdezés végrehajtásához, amelynek eredménye JSON-objektummá alakul át az ügyfél elemzéséhez.
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>
"szintaktikai cukor", és egyszerűSELECT
utasítások használatával 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...]
.