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

아래의 X는 위 쿼리의 번호를 나타낼 위치를 나타냅니다. count()MongoDB 루프 쿼리

나는 각각을 반복 할 방법을 찾으려고 노력하고있다. (예를 들어, '메타 데이터', '메타 데이터', '메타 데이터' 첫 번째 쿼리의 사용자 수를 계산하고 두 번째 쿼리의 총 결과 수를 계산합니다. 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 

그러나 사용자 이름 부분을 놓치고 있습니다. 요점은 사서함에있는 메시지 수가 많은 사용자 목록을 생성하는 것입니다.

+0

이미 시도 무엇을 작동하지 않는 걸 말해 보시기 바랍니다. http://stackoverflow.com/help/how-to-ask –

+0

var x = db.fs.files.distinct ("metadata.user") forEach (function (x) {db.fs.files. Fri Jun 17 11:58:25 exec 오류 : (셸) : 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

Fri Jun 17 (shell) : 1 TypeError : Object 5027,6048,6049에 'hasNext'메서드가 없습니다. while (myCursor.hasNext()) { ^ – user6480110

+0

당신의 mongo 버전이 무엇입니까? – notionquest

+0

MongoDB 셸 버전 : 2.2.3 – user6480110