Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Cosmos DB (in Azure en Fabric) ondersteunt een uitgebreide set operators waarmee u complexe query's en gegevensbewerkingen kunt uitvoeren. Deze operators omvatten bitsgewijze, gelijkheid en vergelijking, logische en ternaire/samenvoegingsoperators, die elk specifieke doeleinden dienen bij het bouwen en verwerken van query's.
Bitsgewijze operatoren
Bitwise-operators zijn handig voor het uitvoeren van bewerkingen op laag niveau op gehele getallen bij het maken van JSON-resultatensets. Deze operators werken op dezelfde manier als vergelijkbare operators in programmeertalen op een hoger niveau, zoals C# en JavaScript. Zie Bitwise- en shiftoperators voor voorbeelden van C#-bits operatoren.
In de volgende tabel worden de bitsgewijze bewerkingen beschreven die worden ondersteund in de API voor NoSQL:
| Operation | Operator | Description |
|---|---|---|
| Shift links | << |
Shift left-value left by the specified number of bits. |
| Shift rechts | >> |
Shift left-value right by the specified number of bits. |
| Nulopvulling (niet-ondertekende) rechter shift | >>> |
Shift left-value right by the specified number of bits without filling left-most bits. |
| EN | & |
Berekent bitsgewijze logische AND. |
| OR | | |
Berekent bitsgewijze logische OR. |
| XOR | ^ |
Berekent bitwise logische exclusieve OR. |
Example
De volgende query demonstreert elke bitsgewijze operator:
SELECT
(100 >> 2) AS rightShift,
(100 << 2) AS leftShift,
(100 >>> 0) AS zeroFillRightShift,
(100 & 1000) AS logicalAnd,
(100 | 1000) AS logicalOr,
(100 ^ 1000) AS logicalExclusiveOr
Deze query retourneert de volgende resultaten:
[
{
"rightShift": 25,
"leftShift": 400,
"zeroFillRightShift": 100,
"logicalAnd": 96,
"logicalOr": 1004,
"logicalExclusiveOr": 908
}
]
Belangrijk
De bitsgewijze operators in Cosmos DB volgen hetzelfde gedrag als bitwise operators in JavaScript. JavaScript slaat getallen op als 64 bits zwevende kommanummers, maar alle bitsgewijze bewerkingen worden uitgevoerd op binaire getallen van 32 bits. Voordat een bitsgewijze bewerking wordt uitgevoerd, converteert JavaScript getallen naar 32 bits ondertekende gehele getallen. Nadat de bitsgewijze bewerking is uitgevoerd, wordt het resultaat teruggezet naar JavaScript-getallen van 64 bits. Zie Voor meer informatie over de bitwise operators in JavaScript, javaScript binaire bitwise operators op Mozilla Developer Network (MDN) Web Docs.
Gelijkheids- en vergelijkingsoperatoren
Gelijkheids- en vergelijkingsoperatoren controleren twee expressies op gelijkwaardigheid of vergelijken ze relationeel. In de volgende tabel ziet u het resultaat van gelijkheidsvergelijkingen tussen twee JSON-typen in de API voor NoSQL:
| niet-gedefinieerde | Null | Booleaan | Number | Snaar / Touwtje | Object | Array | |
|---|---|---|---|---|---|---|---|
| niet-gedefinieerde | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde |
| Nul | Ongedefinieerde | OK- | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde |
| Boolean | Ongedefinieerde | Ongedefinieerde | OK- | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde |
| Nummer | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | OK- | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde |
| String | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | OK- | Ongedefinieerde | Ongedefinieerde |
| Object | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | OK- | Ongedefinieerde |
| Array | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | Ongedefinieerde | OK- |
Voor vergelijkingsoperatoren zoals >``, >=, `!=, <``, and <=, comparison across types or between two objects or arrays produces `undefined. Als het resultaat van de scalaire expressie undefined``, the item isn't included in the result, because niet is gedefinieerd alsdoesn't equate towaar''.
Example
De volgende query vergelijkt een getal- en tekenreekswaarde, die 'niet gedefinieerd' produceert. Daarom bevat het filter geen resultaten:
SELECT
*
FROM
products p
WHERE
0 = "true"
Logische operatoren
Logische operators vergelijken twee expressies met booleaansetrue/false operanden. In de volgende secties worden de waarheidstabellen en prioriteit voor elke logische operator beschreven.
OR-operator
De OR operator retourneert true wanneer een van de voorwaarden 'waar' is.
true |
false |
undefined |
|
|---|---|---|---|
true |
true |
true |
true |
false |
true |
false |
undefined |
undefined |
true |
undefined |
undefined |
AND-operator
De AND operator retourneert true wanneer beide expressies 'true' zijn.
true |
false |
undefined |
|
|---|---|---|---|
true |
true |
false |
undefined |
false |
false |
false |
false |
undefined |
undefined |
false |
undefined |
NOT-operator
De NOT operator keert de waarde van een booleaanse expressie om.
NOT |
|
|---|---|
true |
false |
false |
true |
undefined |
undefined |
Operatorprioriteit
De logische operators OR``, AND', en NOT hebben de volgende prioriteitsniveaus:
| Operator | Priority |
|---|---|
NOT |
1 |
AND |
2 |
OR |
3 |
Projectieoperator
De speciale operator * projecteert het hele item zoals dat is. Wanneer dit wordt gebruikt, moet dit het enige verwachte veld zijn. Een query zoals SELECT * FROM products p is geldig, maar SELECT VALUE * FROM products p of SELECT *, p.id FROM products p niet geldig.
Ternaire- en samenvoegoperatoren
Ternaire en samenvoegingsoperatoren evalueren expressies en retourneren resultaten op basis van booleaanse operanden of het bestaan van velden. Deze operators werken op dezelfde manier als vergelijkbare operators in populaire programmeertalen, zoals C# en JavaScript. Gebruik de ternaire (?) en samenvoegingsoperators (??) om voorwaardelijke expressies te bouwen die bestand zijn tegen semi-gestructureerde of gemengde gegevens.
Ternaire operator
De ? operator retourneert een waarde op basis van de evaluatie van een Boole-expressie.
Syntaxis
<bool_expr> ?
<expr_true> :
<expr_false>
Arguments
| Description | |
|---|---|
bool_expr |
Een Booleaanse expressie. |
expr_true |
De expressie die moet worden geëvalueerd als bool_expr dit wordt geëvalueerd true. |
expr_false |
De expressie die moet worden geëvalueerd als bool_expr dit wordt geëvalueerd false. |
Voorbeelden
In dit voorbeeld worden items in een container gebruikt die meerdere metagegevenseigenschappen bevatten met betrekking tot prijzen. De collapsible eigenschap bestaat niet voor alle items:
[
{
"name": "Stangincy trekking poles",
"price": 24.50,
"onCloseout": false,
"onSale": true,
"collapsible": true
},
{
"name": "Vimero hiking poles",
"price": 24.50,
"onCloseout": false,
"onSale": false
},
{
"name": "Kramundsen trekking poles",
"price": 24.50,
"onCloseout": true,
"onSale": true,
"collapsible": false
}
]
Deze query evalueert de onSale expressie, die gelijk is aan onSale = true``. The query returns the price multiplied by 0,85ifwaar, or the price unchanged if `false:
SELECT
p.name,
p.price AS subtotal,
p.onSale ? (p.price * 0.85) : p.price AS total
FROM
products p
Deze query retourneert:
[
{
"name": "Stangincy trekking poles",
"subtotal": 24.5,
"total": 20.825
},
{
"name": "Vimero hiking poles",
"subtotal": 24.5,
"total": 24.5
},
{
"name": "Kramundsen trekking poles",
"subtotal": 24.5,
"total": 20.825
}
]
U kunt ook aanroepen naar de ? operator nesten. In dit voorbeeld wordt een extra berekening toegevoegd op basis van een tweede eigenschap (onCloseout):
SELECT
p.name,
p.price AS subtotal,
p.onCloseout ? (p.price * 0.55) : p.onSale ? (p.price * 0.85) : p.price AS total
FROM
products p
Deze query retourneert:
[
{
"name": "Stangincy trekking poles",
"subtotal": 24.5,
"total": 20.825
},
{
"name": "Vimero hiking poles",
"subtotal": 24.5,
"total": 24.5
},
{
"name": "Kramundsen trekking poles",
"subtotal": 24.5,
"total": 13.475000000000001
}
]
Net als bij andere queryoperators sluit de ? operator items uit als de eigenschappen waarnaar wordt verwezen ontbreken of de typen die worden vergeleken verschillen.
Samenvoegingsoperator
Gebruik de ?? operator om efficiënt te controleren op een eigenschap in een item bij het uitvoeren van query's op semi-gestructureerde of gemengde gegevens.
Example
In deze query wordt ervan uitgegaan dat een item waar de collapsible eigenschap niet aanwezig is, niet samenvouwbaar is:
SELECT
p.name,
p.collapsible ?? false AS isCollapsible
FROM
products p