MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie zähle ich Vorkommen in verschachtelten Dokumenten in Mongodb?

Je nachdem, wie viele Daten Sie verarbeiten müssen, gibt es verschiedene Möglichkeiten, dies anzugehen. Sie könnten das Aggregation Framework verwenden in MongoDB 2.2+ oder möglicherweise Map/Reduce . Siehe Vergleich der Aggregationsbefehle für eine Zusammenfassung der Funktionen und Einschränkungen.

Hier ist ein Beispiel mit dem Aggregation Framework:

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

Für Ihr Beispieldokument ergibt dies:

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