MongoDB Count () vs. Agregação
Eu usei muito a agregação no mongo, conheço os benefícios de desempenho nas contagens agrupadas e etc. Mas, o mongo tem alguma diferença de desempenho nessas duas maneiras de contar todos os documentos em uma coleção ?:
collection.aggregate([
{
$match: {}
},{
$group: {
_id: null,
count: {$sum: 1}
}
}]);
e
collection.find({}).count()
Atualizar: Segundo caso: digamos que temos esses dados de amostra:
{_id: 1, type: 'one', value: true}
{_id: 2, type: 'two', value: false}
{_id: 4, type: 'five', value: false}
Comaggregate()
:
var _ids = ['id1', 'id2', 'id3'];
var counted = Collections.mail.aggregate([
{
'$match': {
_id: {
'$in': _ids
},
value: false
}
}, {
'$group': {
_id: "$type",
count: {
'$sum': 1
}
}
}
]);
Comcount()
:
var counted = {};
var type = 'two';
for (i = 0, len = _ids.length; i < len; i++) {
counted[_ids[i]] = Collections.mail.find({
_id: _ids[i], value: false, type: type
}).count();
}