SELECT – Frågespråk i Cosmos DB (i Azure och Fabric)

Satsen SELECT identifierar fält som ska returneras i frågeresultat. Satsen projicerar sedan dessa fält i JSON-resultatuppsättningen.

Varje fråga består av en SELECT sats och valfritt FROM och WHERE satser enligt ANSI SQL-standarder. Vanligtvis räknas källan i FROM -satsen upp och WHERE -satsen tillämpar ett filter på källan för att hämta en delmängd av JSON-objekt.

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 ]

Arguments

Description
select_specification Egenskaper eller värde som ska väljas för resultatuppsättningen.
* Anger att värdet ska hämtas utan att göra några ändringar. Om det bearbetade värdet är ett objekt hämtas alla egenskaper.
object_property_list Anger listan över egenskaper som ska hämtas. Varje returnerat värde är ett objekt med de angivna egenskaperna.
VALUE Anger att JSON-värdet ska hämtas i stället för det fullständiga JSON-objektet. Det här argumentet, till skillnad från <property_list> , omsluter inte det beräknade värdet i ett objekt.
DISTINCT Anger att dubbletter av projekterade egenskaper ska tas bort.
scalar_expression Uttryck som representerar det värde som ska beräknas.

Returtyper

Returnerar de planerade fälten eller värdena enligt angiven.

Examples

Det här avsnittet innehåller exempel på hur du använder den här frågespråkkonstruktionen.

Välj statiska strängvärden

I det här exemplet returnerar två statiska strängvärden och en matris med ett enda objekt som innehåller båda värdena. Eftersom värdena inte är namngivna används ett sekventiellt genererat tal för att namnge motsvarande json-fält.

SELECT
  "Cosmic", "Works"
[
  {
    "$1": "Cosmic",
    "$2": "Works"
  }
]

Projektfält

I det här exemplet används JSON-projektion för att finjustera den exakta strukturen och fältnamnen för det resulterande JSON-objektet. Här skapas ett JSON-objekt med fälten med namnet identifier och model. Det externa JSON-objektet är fortfarande namnlöst, så ett genererat tal ($1) används för att namnge det här fältet.

SELECT {
  identifier: p.name,
  model: p.sku
}
FROM
  products p
[
  {
    "$1": {
      "identifier": "Remdriel Shoes",
      "model": "61506"
    }
  },
  {
    "$1": {
      "identifier": "Tirevy trunks",
      "model": "73402"
    }
  },
  ...
]

Statisk projektsträng

I det här exemplet används nyckelordet VALUE med en statisk sträng för att skapa en matris med strängar som resultat.

SELECT VALUE
  "Cosmic Works"
[
  "Cosmic Works"
]

Komplex projektion

I det här exemplet använder frågan en kombination av en SELECT sats, nyckelordet VALUE , en FROM -sats och JSON-projektion för att utföra en gemensam fråga med resultatet omvandlat till ett JSON-objekt som klienten ska parsa.

SELECT VALUE {
  name: p.name,
  link: p.metadata.link,
  firstTag: p.tags[0]["value"]
}
FROM
  products p
[
  {
    "name": "Remdriel Shoes",
    "link": "https://www.adventure-works.com/remdriel-shoes/68719521615.p",
    "firstTag": "suede-leather-and-mesh"
  },
  {
    "name": "Tirevy trunks",
    "link": "https://www.adventure-works.com/tirevy-trunks/68719520573.p",
    "firstTag": "polyester"
  },
  ...
]

Anmärkningar

  • Syntaxen SELECT * är endast giltig om FROM satsen har deklarerat exakt ett alias. SELECT * ger en identitetsprojektion, vilket kan vara användbart om ingen projektion behövs. SELECT * är endast giltigt om FROM satsen anges och endast introduceras en enda indatakälla.
  • Både SELECT <select_list> och SELECT * är syntaktisk socker och kan uttryckas med enkla SELECT instruktioner.
  • Uttrycket SELECT * FROM ... AS from_alias ... motsvarar SELECT from_alias FROM ... AS from_alias ....
  • Uttrycket SELECT <expr1> AS p1, <expr2> AS p2,..., <exprN> AS pN [other clauses...] motsvarar SELECT VALUE { p1: <expr1>, p2: <expr2>, ..., pN: <exprN> }[other clauses...].