我的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
答案 0 :(得分:2)
您可以先由作者$unwind
(docs)收藏,然后按照您现在正在$group
进行收集:
pipeline = [{"$unwind": "$AU"},
{"$group": {"_id": "$AU", "count": {"$sum": 1}}}]
db.collection.aggregate(pipeline)