MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да броим срещания във вложен документ в mongodb?

Има няколко начина да подходите към това в зависимост от това колко данни трябва да обработите. Можете да използвате Aggregation Framework в MongoDB 2.2+ или евентуално Map/Reduce . Вижте Сравнение на командите за агрегиране за обобщение на функциите и ограниченията.

Ето пример за използване на рамката за агрегиране:

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

За вашия примерен документ това връща:

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Услугата Mongo се срина. Трябва да се намери причината за срива

  2. MongoDB shell:как да търсите колекции, които съответстват на име или регулярен израз

  3. Как да съхранявате големи числа в MongoDB с Node.js

  4. MongoDB геопространствена заявка с $not

  5. MongoDB заявка към попълнени полета