2016-06-17 4 views
0
db.fs.files.distinct("metadata.user") 
[ 
    "5027", 
    "6048", 
    "6049", 
] 

Ниже показано, где я хотел бы, чтобы числа из вышеуказанного запроса отображались. db.fs.files.find ({'metadata.user': X, 'metadata.folder': 'inbox'}). Count()MongoDB Loop Query

Я пытаюсь найти способ повторить каждую из пользователей в первом запросе и подсчет общего количества результатов во втором запросе. Есть ли простой способ обработать этот запрос в Shell MongoDB?

Выхода я бы искал бы (просто ищем чистые номера):

User Inbox 
5027 9872 
6048 12 
6049 125 

Update:

Я был в состоянии сделать что-то очень близко к тому, что я искал :

# 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 

Однако, я пропустил часть имени пользователя. Дело в том, чтобы создать список пользователей с количеством сообщений в своих почтовых ящиках.

+0

Расскажите нам, что вы уже пробовали и что не работает. Пожалуйста, прочитайте http://stackoverflow.com/help/how-to-ask –

+0

var x = db.fs.files.distinct ("metadata.user") forEach (function (x) {db.fs.files. find ({'metadata.user': x, 'metadata.folder': 'inbox'})}) Пт июн 17 11:58:25 exec error: (shell): 1 ReferenceError: forEach не определен – user6480110

ответ

0

Пожалуйста, попробуйте это

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

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

Пт июн 17 12:00:02 Ошибка exec: (shell): 1 TypeError: Объект 5027,6048,6049 не имеет метода 'hasNext' while (myCursor.hasNext()) { ^ – user6480110

+0

Какова ваша версия монго? – notionquest

+0

Версия оболочки MongoDB: 2.2.3 – user6480110