MongoDB计算作者的文章数量

时间:2017-08-26 13:40:01

标签: mongodb mongodb-query pymongo

我的MongoDB设置如下:

 {_id: id,
  'article_information': ...
  'AU':[list of authors]
   ..other fields...
 }

我正在尝试使用聚合来计算每个作者的文档(文章)数量。此时重复即可。组合作者是另一层处理,由于名称的改变,带有重音符号的名称拼写等等。

我希望输出类似于以下内容:

 'Author 1': Count of documents mentioning author 1, 
            ...
 'Author N': Count of documents mentioning author n, 

以下尝试产生一个空列表:

 collection.aggregate([{"$group":{"_id":'AU',"count":{"$sum":1}}}])

我认为错误可能是因为$AU是字符串列表,但db.collection.distinct('AU')返回字符串列表,而不是列表列表。

在SQL样式语法中,我将查询视为以下内容放入一个迭代作者列表的for循环中。我不确定如何在Mongo中写这个。

 SELECT * from collection WHERE author IN AUTHOR_LIST

1 个答案:

答案 0 :(得分:2)

您可以先由作者$unwinddocs)收藏,然后按照您现在正在$group进行收集:

pipeline = [{"$unwind": "$AU"}, 
            {"$group": {"_id": "$AU", "count": {"$sum": 1}}}]
db.collection.aggregate(pipeline)

pymongo aggregation framework docs中有一个例子。