MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Recupero della lunghezza di un elenco in MongoDB

Ora, potrei pensare in due approcci:

1) Utilizzo del framework di aggregazione:

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

2) Oppure puoi aggiungere un campo al documento che contiene il conteggio delle voci. Quindi, ogni volta che si inserisce un nuovo valore nell'array di voci, è necessario incrementare il contatore. L'aggiornamento sarà così:

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

Chiaramente, qui hai un compromesso:il framework di aggregazione è troppo costoso per questa semplice operazione. Ma aggiungendo un campo da documentare, ogni aggiornamento dovrebbe incrementare il contatore.

IMHO, il contatore sembra più ragionevole, anche se sembra una soluzione alternativa.