Operadores ternarios y de fusión en Azure Cosmos DB for NoSQL
SE APLICA A: NoSQL
Los operadores ternarios y de fusión de Azure Cosmos DB for NoSQL evalúan expresiones y devuelven un resultado en función de un operando booleano o de si existe un campo. Los operadores ternarios y de fusión funcionan de forma similar a los lenguajes de programación populares, como C# y JavaScript. Use los operadores ternarios (?
) y de fusión (??
) para crear expresiones condicionales resistentes a datos semiestructurados o de tipo mixto.
Operador ternario
El operador ?
devuelve un valor en función de la evaluación de la primera expresión.
Sintaxis
<bool_expr> ?
<expr_true> :
<expr_false>
Argumentos
Descripción | |
---|---|
bool_expr |
Expresión booleana. |
expr_true |
Expresión que se va a evaluar si bool_expr se evalúa como true . |
expr_false |
Expresión que se va a evaluar si bool_expr se evalúa como false . |
Ejemplos
Tenga en cuenta estos elementos en un contenedor. Contienen varias propiedades de metadatos relacionadas con los precios y una de las propiedades no existe en todos los elementos.
[
{
"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
}
]
Esta consulta evalúa la expresión onSale
, que es equivalente a onSale = true
. A continuación, la consulta devuelve el precio multiplicado por 0.85
si true
o el precio no cambia si false
.
SELECT
p.name,
p.price AS subtotal,
p.onSale ? (p.price * 0.85) : p.price AS total
FROM
products p
[
{
"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
}
]
Además, también puede anidar llamadas al operador ?
. En este ejemplo se agrega un cálculo adicional basado en una segunda propiedad (taxFree
)
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
[
{
"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
}
]
Como ocurre con otros operadores de consulta, el operador ?
excluye elementos si faltan las propiedades a las que se hace referencia o si los tipos que se comparan son diferentes.
Operador de fusión
Use el operador ??
para comprobar de manera eficaz una propiedad en un elemento al consultar datos semiestructurados o de tipos mixtos.
Por ejemplo, esta consulta supone que cualquier elemento en el que la propiedad collapsible
no esté presente, no se puede contraer.
SELECT
p.name,
p.collapsible ?? false AS isCollapsible
FROM
products p