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

Comment compter les occurrences dans un document imbriqué dans mongodb ?

Il existe plusieurs façons d'aborder cela en fonction de la quantité de données que vous devez traiter. Vous pouvez utiliser le Cadre d'agrégation dans MongoDB 2.2+, ou éventuellement Map/Reduce . Voir Comparaison des commandes d'agrégation pour un résumé des fonctionnalités et limitations.

Voici un exemple utilisant le cadre d'agrégation :

db.fruit.aggregate(
    // Limit matching documents (can take advantage of index)
    { $match: {
        "_id" : ObjectId("52c1d909fc7fc68ddd999a73")
    }},

    // Unpack the question & answer arrays
    { $unwind: "$questions" },
    { $unwind: "$questions.answers" },

    // Group by the answer values
    { $group: {
        _id: "$questions.answers.answer",
        count: { $sum: 1 }
    }}
)

Pour votre exemple de document, cela renvoie :

{
    "result" : [
        {
            "_id" : "banana",
            "count" : 1
        },
        {
            "_id" : "apple",
            "count" : 2
        }
    ],
    "ok" : 1
}