0

Mongo 쉘에서 쿼리를 실행 중이고 두 번째 쿼리를 실행하려면이 쿼리의 출력이 필요합니다. 첫 번째 쿼리는 평균을 찾기위한 집계 쿼리입니다.하나의 쿼리 출력을 사용하여 Mongo 쉘에서 다른 쿼리를 실행하십시오.

첫 번째 쿼리는 다음과 같습니다

db.table_name.aggregate([{$group: {_id:{userId:'$userId'},avgRating:{$avg:"$rating"}}}]) 

은 이제 사용자 테이블에서 데이터를 가져 싶어, 출력에 _id (userId)를 사용하여.

+1

쿼리를보고 질문에 맞게 수정하고 잘 포맷 할 수 있습니까? 귀하의 질문에 직접 관련이없는 자료를 정리 했으므로 [요청 긴급 요청이 잘 접수되지 않았 음] (http://meta.stackoverflow.com/q/326569)에 유의하십시오. – halfer

+0

두 개의 다른 테이블을 동시에 쿼리 하시겠습니까? –

답변

0

다른 쿼리에 대한 필요가 없습니다, 당신은 여전히 ​​같은 집계 작업을 실행 할 수 있지만, 이번에는 user에 가입 파이프 왼쪽을 할 수있는 이전 $group 파이프 라인의 결과를 $lookup 연산자를 사용하는 다른 파이프 라인을 추가 컬렉션 :

db.table_name.aggregate([ 
    { 
     "$group": { 
      "_id": "$userId", 
      "avgRating": { "$avg": "$rating" } 
     } 
    }, 
    { 
     "$lookup": { 
      "from": "user", 
      "localField": "_id", 
      "foreignField": "_id", 
      "as": "users" 
     } 
    } 
]) 

하여 MongoDB의 버전은 $lookup operat를 지원하지 않는 경우 또는 다음과 같이 실행하는 두 개의 쿼리가 필요합니다.

var cursor = db.table_name.aggregate([ 
    { 
     "$group": { 
      "_id": "$userId", 
      "avgRating": { "$avg": "$rating" } 
     } 
    } 
]); 

var results = cursor.map(function(doc){ 
    var user = db.users.findOne({ "_id": doc._id }) 
    return { 
     user: user, 
     avgRating: doc.avgRating 
    }; 
}); 
printjson(results); 
+1

그것은 나를 위해 일했던 감사합니다! –

관련 문제