MongoDB循环查询

时间:2016-06-17 15:39:03

标签: mongodb loops

db.fs.files.distinct( "metadata.user" )
[
    "5027",
    "6048",
    "6049",
]

下面的X表示我想要显示上述查询中的数字的位置。     db.fs.files.find({' metadata.user':X,' metadata.folder':' inbox'})。count()

我试图找到一种方法来迭代第一个查询中的每个用户,并计算第二个查询中的结果总数。有没有一种简单的方法可以在MongoDB Shell中创建这个查询?

我想要的输出是(只是寻找纯数字):

User Inbox
5027 9872
6048 12
6049 125

更新

我能够完成一些非常接近我想要的东西:

# for x in $(psql -d ****** postgres -c "select user_name from users where   user_name ~ '^[0-9]+$' order by user_name;" | tail -n +3 | head -n -2); do mongo vmdb --quiet --eval "db.fs.files.find({ 'metadata.user' : '$x'}).count()"; done| sort -nr

1381
1073
982

但是,我错过了用户名部分。关键是要生成一个用户列表,其中包含邮箱中的邮件数。

1 个答案:

答案 0 :(得分:0)

请试试这个

var myCursor = db.collection.find( "metadata.user" );

while(myCursor.hasNext()) {
  db.fs.files.find({ 'metadata.user' : X,  'metadata.folder' : 'inbox' }).count();
}