MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Abrufen der Länge einer Liste in MongoDB

Nun, ich könnte in zwei Ansätzen denken:

1) Verwendung des Aggregationsframeworks:

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

2) Oder Sie können dem Dokument ein Feld hinzufügen, das die Anzahl der Einträge enthält. Jedes Mal, wenn Sie einen neuen Wert in das Entries-Array verschieben, müssen Sie den Zähler erhöhen. Das Update sieht folgendermaßen aus:

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

Hier müssen Sie eindeutig einen Kompromiss eingehen:Das Aggregations-Framework ist für diesen einfachen Vorgang zu teuer. Aber wenn Sie ein Feld zum Dokument hinzufügen, sollte jede Aktualisierung den Zähler erhöhen.

IMHO sieht der Zähler vernünftiger aus, obwohl er wie eine Problemumgehung aussieht.