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

Come contare le occorrenze nel documento nidificato in mongodb?

Ci sono alcuni modi per avvicinarsi a questo a seconda della quantità di dati che devi elaborare. Puoi utilizzare il Strutture di aggregazione in MongoDB 2.2+, o possibilmente Map/Reduce . Vedi Confronto dei comandi di aggregazione per un riepilogo delle caratteristiche e delle limitazioni.

Ecco un esempio che utilizza il Framework di aggregazione:

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 }
    }}
)

Per il tuo documento di esempio questo restituisce:

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