Best practice MongoDB per contare i documenti correlati

Mi stavo chiedendo quale sia la migliore pratica per ottenere un conteggio dei documenti correlati di un particolare documento in MongoDB.

Lo scenario è il seguente: ho bisogno di ottenere post condivisi dagli utenti e ho bisogno di ottenere il numero totale di commenti relativi a quei post.

Vorrei utilizzare il metodo Aggregazione MongoDB se ansible (se questo è il modo migliore per farlo) sono consapevole di come eseguire questa query utilizzando metodi separati .count () e .find ().

documento nella raccolta dei post:

{ _id: ObjectId('5a66321e7e2043078bc3b88a'), uid: 'UniqueIDofTheUser', text: 'Post text' } 

documento nella raccolta dei commenti

 { _id: ObjectId('5a66321e7e2043078bc3b88c'), uid: 'UniqueIDofTheUser', post_id: ObjectId('5a66321e7e2043078bc3b88a'), text: 'Comment text' } 

Risultato desiderato:

 [ { _id: ObjectId('5a66321e7e2043078bc3b88a'), uid: 'UniqueIDofTheUser', text: 'Post text', commentsCount: 20 }, { _id: ObjectId('5a66321e7e2043078bc3b88c'), uid: 'UniqueIDofTheUser', text: 'Another post', commentsCount: 3 }, { _id: ObjectId('5a6632e17e2043078bc3b88f'), uid: 'UniqueIDofTheUser', text: 'Some random post', commentsCount: 4 }, ] 

Puoi semplicemente eseguire una $lookup per inserire i commenti postati per ogni post con $size sui commenti restituiti per un conteggio.

 db.posts.aggregate( [{ $lookup: { from: "comments", localField: "_id", foreignField: "post_id", as: "commentsCount" } }, { $addFields: { "commentsCount": { $size: "$commentsCount" } } }] )