mongodb基于其他字段计算一个字段的值

时间:2016-12-23 06:10:46

标签: mongodb

我有一个名为genre_collection的集合,其结构如下:

user     | genres
 ----------------
 1       |   comedy
 1       |   action
 1       |   thriller
 1       |   comedy
 1       |   action
 2       |   war
 2       |   adventure
 2       |   war
 2       |   thriller

我试图为每个用户找到每个类型的计数,即我理想的最终结果将是这样的:

1 | comedy |2
1 | action |1
1 | thriller |1
2 | war |2
2 | adventure |1
2 | thriller |1

任何帮助都非常有用。

2 个答案:

答案 0 :(得分:0)

试试这个:

db.genre_collection.aggregate([
       {"$group" : {_id:{genres:"$genres"}, count:{$sum:1}}} ])
    ])

希望它有所帮助!!!

答案 1 :(得分:0)

您可以使用$ group

进行聚合

试试这个:

db.genre_collection.aggregate([
   {
      $group:{
         _id:{
            genre:"$genres",
            user:"$user"
         },
         count:{
            $sum:1
         }
      }
   }
])

输出:

{ "_id" : { "genre" : "adventure", "user" : 2 }, "count" : 1 }
{ "_id" : { "genre" : "action", "user" : 1 }, "count" : 2 }
{ "_id" : { "genre" : "thriller", "user" : 2 }, "count" : 1 }
{ "_id" : { "genre" : "war", "user" : 2 }, "count" : 2 }
{ "_id" : { "genre" : "comedy", "user" : 1 }, "count" : 2 }
{ "_id" : { "genre" : "thriller", "user" : 1 }, "count" : 1 }
相关问题