Trefwoorden in Azure Cosmos DB for NoSQL

VAN TOEPASSING OP: NoSQL

De querytaal van Azure Cosmos DB for NoSQL bevat een set gereserveerde trefwoorden die worden gebruikt in query's voor uitgebreide functionaliteit.

BETWEEN

Het BETWEEN trefwoord evalueert naar een booleaanse waarde die aangeeft of de doelwaarde tussen twee opgegeven waarden ligt, inclusief.

U kunt het BETWEEN trefwoord met een WHERE -component gebruiken om query's uit te drukken waarmee resultaten worden gefilterd op tekenreeksbereiken of numerieke waarden. De volgende query retourneert bijvoorbeeld alle items waarin de prijs tussen 17.25 en ligt 25.50, ook weer inclusief.

SELECT VALUE
    p.price
FROM
    products p
WHERE
    p.price BETWEEN 17.25 AND 25.50
[
  20
]

U kunt ook het BETWEEN trefwoord in de SELECT -component gebruiken, zoals in het volgende voorbeeld.

SELECT 
    (p.price BETWEEN 0 AND 10) AS booleanLessThanTen,
    p.price
FROM
    products p
[
  {
    "booleanLessThanTen": false,
    "price": 20.0
  },
  {
    "booleanLessThanTen": true,
    "price": 7.5
  }
]

Notitie

In de API voor NoSQL kunt u, in tegenstelling tot ANSI SQL, bereikquery's uitdrukken op eigenschappen van gemengde typen. Kan bijvoorbeeld een getal zijn zoals price5.0 in sommige items en een tekenreeks zoals fifteenDollars in andere. In deze gevallen, zoals in JavaScript, resulteert de vergelijking tussen de twee verschillende typen in undefined, zodat het item wordt overgeslagen.

DISTINCT

Het DISTINCT trefwoord elimineert duplicaten in de geprojecteerde queryresultaten.

In dit voorbeeld projecteert de query waarden voor elke productcategorie. Als twee categorieën gelijkwaardig zijn, wordt slechts één exemplaar geretourneerd in de resultaten.

SELECT DISTINCT VALUE
    p.category
FROM
    products p
[
  "Accessories",
  "Tools"
]

U kunt ook waarden projecten, zelfs als het doelveld niet bestaat. In dit geval bestaat het veld niet in een van de items, dus de query retourneert een leeg object voor die specifieke unieke waarde.

SELECT DISTINCT
    p.category
FROM
    products p

U ziet deze uitvoer:

[
  {},
  {
    "category": "Accessories"
  },
  {
    "category": "Tools"
  }
]

ALS

Retourneert een booleaanse waarde, afhankelijk van of een specifieke tekenreeks overeenkomt met een opgegeven patroon. Een patroon kan bestaan uit gewone tekens en jokertekens.

Tip

U kunt logisch gelijkwaardige query's schrijven met behulp van het LIKE trefwoord of de RegexMatch systeemfunctie. U ziet hetzelfde indexgebruik, ongeacht welke optie u kiest. De keuze van welke optie moet worden gebruikt, is grotendeels gebaseerd op de syntaxisvoorkeur.

Notitie

Omdat LIKE een index kan worden gebruikt, moet u een bereikindex maken voor eigenschappen die u vergelijkt met behulp van LIKE.

U kunt de volgende jokertekens gebruiken met LIKE:

Beschrijving Voorbeeld
% Een tekenreeks van nul of meer tekens. WHERE c.description LIKE "%SO%PS%"
_(onderstrepingsteken) Een willekeurig teken. WHERE c.description LIKE"%SO_PS%"
[ ] Een willekeurig teken binnen het opgegeven bereik ([a-f]) of een set ([abcdef]). WHERE c.description LIKE "%SO[t-z]PS%"
[^] Een willekeurig teken dat niet binnen het opgegeven bereik ([^a-f]) of een set () valt.[^abcdef] WHERE c.description LIKE "%SO[^abc]PS%"

Het % teken komt overeen met een tekenreeks van nul of meer tekens. Door bijvoorbeeld een % aan het begin en einde van het patroon te plaatsen, retourneert de volgende query alle items waarvoor het opgegeven veld de zin als subtekenreeks bevat:

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name LIKE "%driver%"

Als u alleen een % teken aan het einde van het patroon hebt gebruikt, retourneert u alleen items met een beschrijving die begon met fruit:

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name LIKE "%glove"

Op dezelfde manier geeft het jokerteken aan het begin van het patroon aan dat u waarden wilt vergelijken met de opgegeven waarde als voorvoegsel:

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name LIKE "Road%"

Het NOT trefwoord inverses het resultaat van de expressie-evaluatie van het LIKE trefwoord. In dit voorbeeld worden alle items geretourneerd die niet overeenkomen met de LIKE expressie.

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.name NOT LIKE "%winter%"

U kunt zoeken naar patronen die een of meer jokertekens bevatten met behulp van de ESCAPE -component. Als u bijvoorbeeld wilt zoeken naar beschrijvingen die de tekenreeks 20%bevatten, wilt u de % niet interpreteren als een jokerteken. In dit voorbeeld wordt de ^ geïnterpreteerd als het escape-teken, zodat u een escape-teken kunt maken voor een specifiek exemplaar van %.

SELECT VALUE
    p.name
FROM
    products p
WHERE
    p.description LIKE "%20^%%" ESCAPE "^"

U kunt jokertekens tussen vierkante haken zetten om ze als letterlijke tekens te behandelen. Wanneer u een jokerteken tussen vierkante haken plaatst, verwijdert u eventuele speciale kenmerken. Deze tabel bevat voorbeelden van letterlijke tekens.

Geparseerde waarde
LIKE "20-30[%]" 20-30%
LIKE "[_]n" _n
LIKE "[ [ ]" [
LIKE "]" ]

IN

Gebruik het IN trefwoord om te controleren of een opgegeven waarde overeenkomt met een waarde in een lijst. De volgende query retourneert bijvoorbeeld alle items waarvan de categorie overeenkomt met ten minste één van de waarden in een lijst.

SELECT
    *
FROM
    products p
WHERE
    p.category IN ("Accessories", "Clothing")

Tip

Als u uw partitiesleutel in het IN filter opneemt, wordt uw query automatisch gefilterd op alleen de relevante partities.

BOVEN

Het TOP trefwoord retourneert het eerste N aantal queryresultaten in een niet-gedefinieerde volgorde. Gebruik als best practice TOP met de -component om de ORDER BY resultaten te beperken tot het eerste N aantal geordende waarden. Het combineren van deze twee componenten is de enige manier om voorspelbaar aan te geven welke rijen TOP van invloed zijn.

U kunt gebruiken TOP met een constante waarde, zoals in het volgende voorbeeld, of met een variabele waarde met behulp van geparameteriseerde query's.

SELECT TOP 10
    *
FROM
    products p
ORDER BY
    p.price ASC