samples query example c# azure azure-cosmosdb

c# - query - cosmos db group by



Obtener el recuento de registros en Azure DocumentDb (7)

Actualmente funciona en este punto:

SELECCIONAR CUENTA (c.id) DESDE c

Parece que ''select count (*) from c'' en las consultas SQL permitidas por documentdb en el sitio de azure y por medio del explorador de documentdb ( https://studiodocumentdb.codeplex.com/ ) no es compatible. Hasta la fecha, la única forma de obtener un recuento de registros que he encontrado es a partir del código (ver más abajo). Sin embargo, hay suficientes archivos en nuestra colección ahora que esto está fallando. ¿Hay alguna forma de obtener un recuento de cuántos documentos de una colección funcionan mejor que mi solución?

DocumentClient dc = GetDocumentDbClient(); var databaseCount = dc.CreateDatabaseQuery().ToList(); Database azureDb = dc.CreateDatabaseQuery().Where(d => d.Id == Constants.WEATHER_UPDATES_DB_NAME).ToArray().FirstOrDefault(); var collectionCount = dc.CreateDocumentCollectionQuery(azureDb.SelfLink).ToList(); DocumentCollection update = dc.CreateDocumentCollectionQuery(azureDb.SelfLink).Where(c => c.Id == "WeatherUpdates").ToArray().FirstOrDefault(); var documentCount = dc.CreateDocumentQuery(update.SelfLink, "SELECT * FROM c").ToList(); MessageBox.Show("Databases: " + databaseCount.Count().ToString() + Environment.NewLine +"Collections: " + collectionCount.Count().ToString() + Environment.NewLine + "Documents: " + documentCount.Count().ToString() + Environment.NewLine, "Totals", MessageBoxButtons.OKCancel);


Actualmente no existe. Tuve un escenario similar y terminamos agregando un contador a un atributo de documento que se actualiza cada vez que se agrega o elimina un documento. Incluso podría realizar estos dos pasos como parte de un procedimiento de almacenamiento o un desencadenante si desea atomicidad.


Esto es ahora posible en el año 2017 de nuestro señor.

SELECT VALUE COUNT(1) FROM c

[ 1234 ]


Esto es posible de la misma manera que escribes la consulta SQL ahora,

SELECT VALUE COUNT(1) FROM myCollection

NOTA: COUNT (1) no funcionará para grandes conjuntos de datos.

Puede leer más sobre consultas compatibles desde here


Hasta la implementación de la palabra clave "count", debe hacer su consulta en un procedimiento de almacenamiento en el servidor. Tenga cuidado de no obtener todas las columnas / propiedades en su consulta si solo desea un recuento.

Seleccione solo el id como;

dc.CreateDocumentQuery(update.SelfLink, "SELECT c.id FROM c")


Mi solución de conteo de código también está funcionando ... una vez que seleccioné el ID como lo señaló Papa Ours :) Para que mi publicación original funcione, reemplace esta línea:

var documentCount = dc.CreateDocumentQuery(update.SelfLink, "SELECT * FROM c").ToList();

con esta linea:

var documentCount = dc.CreateDocumentQuery(update.SelfLink, "SELECT id FROM c").ToList()

Todavía me gusta la idea del procedimiento almacenado, ya que funcionará en el estudio documentdb (proyecto realmente genial :)) - https://studiodocumentdb.codeplex.com/


Solo para recapitular: aquí hay un ejemplo de procedimiento almacenado de conteo a través de JS con soporte de continuación.

Y aquí hay una herramienta más para DocumentDb que es bastante interesante: https://github.com/mingaliu/DocumentDBStudio/releases

Actualizaciones de marzo de 2017 : en el último SDK de DDB, vea el comunicado de prensa de agregados de DDB, hay soporte completo para agregados básicos, sin embargo, por GRUPO (por ahora). Aquí está GIT REpo con ejemplos: https://github.com/arramac/azure-documentdb-dotnet/tree/master/samples/code-samples/Queries