sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur räknar man förekomster i kapslade dokument i mongodb?

Det finns några sätt att närma sig detta beroende på hur mycket data du behöver bearbeta. Du kan använda Aggregation Framework i MongoDB 2.2+, eller möjligen Map/Reduce . Se Jämförelse av aggregeringskommandon för en sammanfattning av funktionerna och begränsningarna.

Här är ett exempel som använder 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 ditt exempeldokument returnerar detta:

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


  1. Ordning av MongoDB-frågeresultat (fråga med numeriskt intervall)

  2. Mongoose uppdatera eller infoga många dokument

  3. Hur ska jag lagra booleska värden i mongodb?

  4. hur man lägger till nya fält i solr-schemat