MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Récupérer la longueur d'une liste dans MongoDB

Maintenant, je pourrais penser à deux approches :

1) Utilisation du cadre d'agrégation :

db.log.aggregate([ { $unwind : "$entries" }, { $group : { _id : "$_id", entries : {$sum:1}  } }  ]);

2) Ou vous pouvez ajouter un champ au document qui contient le nombre d'entrées. Ainsi, chaque fois que vous poussez une nouvelle valeur dans le tableau des entrées, vous devez incrémenter le compteur. La mise à jour ressemblera à ceci :

db.log.update({ _id : 123 }, { $push : { entries : 'value' }, $inc : { entriesCount : 1 } })

De toute évidence, vous avez ici un compromis :le cadre d'agrégation est trop coûteux pour cette opération simple. Mais en ajoutant un champ au document, chaque mise à jour devrait incrémenter le compteur.

À mon humble avis, le compteur semble plus raisonnable, même s'il semble être une solution de contournement.