MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Recuperando o comprimento de uma lista no MongoDB


Agora, eu poderia pensar em duas abordagens:

1) Usando a estrutura de agregação:
db.log.aggregate([ { $unwind : "$entries" }, { $group : { _id : "$_id", entries : {$sum:1}  } }  ]);

2) Ou você pode adicionar um campo ao documento que contém a contagem de entradas. Portanto, cada vez que você envia um novo valor para o array de entradas, deve incrementar o contador. A atualização ficará assim:
db.log.update({ _id : 123 }, { $push : { entries : 'value' }, $inc : { entriesCount : 1 } })

Claramente, você tem um trade-off aqui:a estrutura de agregação é muito cara para essa operação simples. Mas adicionando um campo ao documento, toda atualização deve incrementar o contador.

IMHO, o contador parece mais razoável, embora pareça uma solução alternativa.