operadores len elementos contar consultas consulta collection avanzadas array mongodb mongoid

len - MongoDB: cuenta el número de elementos en una matriz



mongodb len of array (2)

Tengo una colección donde cada documento de la colección tiene una matriz llamada foo que contiene un conjunto de documentos incrustados. ¿Hay actualmente una forma trivial en el shell MongoDB para contar cuántas instancias hay dentro de foo ? algo como:

db.mycollection.foos.count() o db.mycollection.foos.size() ?

Cada documento de la matriz debe tener un foo_id único y quiero hacer un conteo rápido para asegurarme de que la cantidad correcta de elementos esté dentro de una matriz para un documento aleatorio en la colección.


En MongoDB 2.6, el marco de agregación tiene un nuevo operador de $size matriz que puede usar:

> db.mycollection.insert({''foo'':[1,2,3,4]}) > db.mycollection.insert({''foo'':[5,6,7]}) > db.mycollection.aggregate({$project: { count: { $size:"$foo" }}}) { "_id" : ObjectId("5314b5c360477752b449eedf"), "count" : 4 } { "_id" : ObjectId("5314b5c860477752b449eee0"), "count" : 3 }


si está en una versión reciente de mongo (2.2 y posterior) puede usar el marco de agregación.

db.mycollection.aggregate([ {$unwind: ''$foo''}, {$group: {_id: ''$_id'', ''sum'': { $sum: 1}}}, {$group: {_id: null, total_sum: {''$sum'': ''$sum''}}} ])

Lo que te dará el total de tu colección.

La omisión del último group agregará los resultados por registro.