使用数组字符串的mongodb文档中的唯一项目计数

时间:2016-05-09 00:03:45

标签: mongodb

我遇到的问题似乎可以通过我见过的一些汇总样本来解决,但我还没有找到答案。

基本上我有这样的文件:

from flask import request
@app.route('/login', methods=['POST', 'GET'])
def login():
    error = None
    if request.method == 'POST':
        if valid_login(request.form['username'],
                       request.form['password']):
            return log_the_user_in(request.form['username'])
        else:
            error = 'Invalid username/password'
    # the code below is executed if the request method
    # was GET or the credentials were invalid
    return render_template('login.html', error=error)

我需要找到 groupName 的唯一参与者及其出勤次数。例如,使用数据:

{
  date: '2015-01-14 00:00:00.000Z',
  attendees: ['john', 'jane', 'james', 'joanne'],
  groupName: '31'
}

我希望得到类似的内容:

{
  date: '2015-01-13 00:00:00.000Z',
  attendees: ['john', 'jane', 'james', 'joanne'],
  groupName: '31'
},
{
  date: '2015-01-14 00:00:00.000Z',
  attendees: ['james', 'joanne'],
  groupName: '31'
},
{
  date: '2015-01-15 00:00:00.000Z',
  attendees: ['joanne'],
  groupName: '31'
}

我似乎无法找到聚合来获得此类结果。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

db.collection.aggregate([
  {$unwind: '$attendees'},
  {$group: {_id: '$attendees', count: {$sum: 1}}},
  {$project: {_id:0, name: '$_id', count: '$count'}}
])