È possibile utilizzare il aggregation framework:
> db.prabir.aggregate(
{ $unwind : "$comments" },
{ $group: {
_id: '',
count: { $sum: 1 }
}
})
{ "result" : [ { "_id" : "", "count" : 8 } ], "ok" : 1 }
In poche parole questo (temporaneamente) crea un documento separato per ogni commento e quindi incrementa count
per ogni documento.
Per un gran numero di post e commenti che
potrebbe essere più efficiente per tenere traccia del numero di commenti. Quando si aggiunge un commento, si incrementa anche un contatore. Esempio:
// Insert a comment
> comment = { name: 'JohnDoe', comment: 'FooBar' }
> db.prabir.update(
{ post: "A" },
{
$push: { comments: comment },
$inc: { numComments: 1 }
}
)
Utilizzando ancora una volta il quadro di aggregazione:
> db.prabir.aggregate(
{ $project : { _id: 0, numComments: 1 }},
{ $group: {
_id: '',
count: { $sum: "$numComments" }
}
})
{ "result" : [ { "_id" : "", "count" : 8 } ], "ok" : 1 }
fonte
2013-02-03 03:15:19
Sono nuovo di MongoDB. Quel codice per ottenere un conteggio semplice ... è orribile. – otocan