Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Además de emitir consultas mediante la API para NoSQL en Azure Cosmos DB, el SDK del lado servidor de Azure Cosmos DB proporciona una interfaz de JavaScript para realizar consultas optimizadas en procedimientos almacenados y desencadenadores de Azure Cosmos DB. No es necesario tener en cuenta el lenguaje SQL para usar esta interfaz de JavaScript. La API de consulta de JavaScript permite construir consultas de manera programática pasando funciones predicadas en una secuencia de llamadas de función, con una sintaxis similar a las matrices incorporadas de ECMAScript5 y bibliotecas populares de JavaScript como Lodash. El tiempo de ejecución de JavaScript analiza las consultas de manera eficiente y las ejecuta utilizando índices de Azure Cosmos DB.
Funciones de JavaScript admitidas
| Function | Descripción |
|---|---|
chain() ... .value([callback] [, options]) |
Inicia una llamada encadenada que debe finalizarse con value(). |
filter(predicateFunction [, options] [, callback]) |
Filtra la entrada mediante una función de predicado que devuelve true/false para filtrar documentos de entrada y salida en el conjunto resultante. Esta función se comporta de forma similar a una cláusula WHERE en SQL. |
flatten([isShallow] [, options] [, callback]) |
Combina y aplana matrices de cada elemento de entrada en una sola matriz. Esta función se comporta de forma similar a SelectMany en LINQ. |
map(transformationFunction [, options] [, callback]) |
Aplica una proyección dada una función de transformación que asigna cada elemento de entrada a un objeto o valor de JavaScript. Esta función se comporta de forma similar a una cláusula SELECT en SQL. |
pluck([propertyName] [, options] [, callback]) |
Esta función es un acceso directo para un mapa que extrae el valor de una sola propiedad de cada elemento de entrada. |
sortBy([predicate] [, options] [, callback]) |
Genera un nuevo conjunto de documentos ordenando los documentos en el flujo de documento de entrada en orden ascendente mediante el predicado especificado. Esta función se comporta de forma similar a una cláusula ORDER BY en SQL. |
sortByDescending([predicate] [, options] [, callback]) |
Genera un nuevo conjunto de documentos ordenando los documentos en la secuencia de documentos de entrada en orden descendente mediante el predicado especificado. Esta función se comporta de forma similar a una cláusula ORDER BY x DESC en SQL. |
unwind(collectionSelector, [resultSelector], [options], [callback]) |
Realiza una autocombinación con matriz interna y agrega resultados de ambos lados como tuplas a la proyección de resultados. Por ejemplo, unir un documento de persona con person.pets produciría una serie de tuplas en el formato [persona, mascota]. Esto es similar a SelectMany en LINQ de .NET. |
Cuando se incluye dentro de las funciones de predicado o selector, las siguientes construcciones de JavaScript se optimizan automáticamente para ejecutarse directamente en índices de Azure Cosmos DB:
- Operadores simples:
=+-*/%|^&==!====!==<><=>=||&&<<>>>>>~ - Literales, incluido el literal del objeto:
{} - var, return
Las siguientes construcciones de JavaScript no se optimizan para los índices de Azure Cosmos DB:
- Flujo de control:
ifforwhile - Llamadas de función
Para más información, consulte la documentación de JavaScript del lado servidor de Azure Cosmos DB.
Guía de referencia de SQL a JavaScript
En la tabla siguiente se presentan varias consultas SQL y las consultas de JavaScript correspondientes. Al igual que con las consultas SQL, las propiedades (por ejemplo, item.id) son sensibles a mayúsculas y minúsculas.
Nota:
__ (doble subrayado) es un alias para getContext().getCollection() cuando se usa la API de consulta de JavaScript.
| SQL | API de consulta de JavaScript | Descripción |
|---|---|---|
| SELECCIONE* Documentos FROM |
__.map(function(doc) { return doc; }); |
Da como resultado todos los documentos (paginados con token de continuación) tal como está. |
| Seleccionar docs.id, docs.message AS msg, docs.actions Desde Documentos |
__.map(function(doc) { return { id: doc.id, msg: documento.mensaje, acciones:doc.acciones }; }); |
Proyecta el identificador, el mensaje (con alias a msg) y la acción de todos los documentos. |
| SELECCIONE* Desde Documentos WHERE docs.id="X998_Y998" |
__.filter(function(doc) { return doc.id ==="X998_Y998"; }); |
Consultas para documentos con el predicado: id = "X998_Y998". |
| SELECCIONE* Desde Documentos WHERE ARRAY_CONTAINS(docs.Tags, 123) |
__.filter(function(x) { return x.Tags && x.Tags.indexOf(123) > -1; }); |
Consultas de documentos con una propiedad Tags, donde Tags es una matriz que contiene el valor 123. |
| SELECT docs.id, docs.message AS msg Desde Documentos WHERE docs.id="X998_Y998" |
__.chain() .filter(function(doc) { return doc.id ==="X998_Y998"; }) .map(function(doc) { return { id: doc.id, msg: doc.message }; }) .value(); |
Consulta documentos con un predicado, id = "X998_Y998", y proyecta el identificador y el mensaje (como alias msg). |
| SELECT VALUE tag Desde Documentos Etiqueta JOIN EN documentos. Etiquetas ORDER BY docs._ts |
__.chain() .filter(function(doc) { return doc.Tags && Array.isArray(doc.Tags); }) .sortBy(function(doc) { return doc._ts; }) .pluck("Tags") .flatten() .value() |
Filtra los documentos que tienen una propiedad de matriz llamada Etiquetas, luego ordena los documentos resultantes por la propiedad del sistema de marca temporal _ts, y posteriormente proyecta y aplana la matriz de Etiquetas. |
Pasos siguientes
Obtenga más información sobre conceptos y procedimientos para escribir y usar procedimientos almacenados, desencadenadores y funciones definidas por el usuario en Azure Cosmos DB:
- Cómo escribir procedimientos almacenados y desencadenadores mediante la API de consulta de JavaScript
- Uso de procedimientos almacenados, desencadenadores y funciones definidas por el usuario de Azure Cosmos DB
- Uso de procedimientos almacenados, desencadenadores y funciones definidas por el usuario en Azure Cosmos DB
- Referencia de API del lado servidor de JavaScript de Azure Cosmos DB
- JavaScript ES6 (ECMA 2015)