sql >> Databáze >  >> NoSQL >> MongoDB

Jak počítat výskyty ve vnořeném dokumentu v mongodb?

Existuje několik způsobů, jak k tomu přistupovat v závislosti na tom, kolik dat potřebujete zpracovat. Můžete použít Agregační rámec v MongoDB 2.2+, případně Map/Reduce . Viz Porovnání agregačních příkazů pro shrnutí funkcí a omezení.

Zde je příklad použití agregačního rámce:

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

Pro váš vzorový dokument to vrátí:

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


  1. Delegát metatřídy není instancí

  2. existuje způsob, jak automaticky generovat ObjectId, když je model mongoose nový?

  3. MongoDB Zobrazit položky dětí ve vztahu One to Many

  4. Sledujte vytváření dokumentů pomocí MongoDB Streams