0

Mongoシェルでクエリを実行していて、2番目のクエリを実行するためにこのクエリの出力が必要です。最初のクエリは、平均を見つけるための集約クエリです。1つのクエリの出力を使用してMongoシェルで別のクエリを実行する

最初のクエリは次のとおりです。

今出力に _id (userId)を使用して
db.table_name.aggregate([{$group: {_id:{userId:'$userId'},avgRating:{$avg:"$rating"}}}]) 

、私はユーザテーブルからデータを取得したいです。

+1

質問が表示され、うまく整形されますか?私はあなたの質問から、直接関連性のない資料を整理しました。[緊急を要請するのはここではうまくいきません](http://meta.stackoverflow.com/q/326569)。 – halfer

+0

2つの異なるテーブルを同時に照会しますか? –

答えて

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をサポートしていない場合2つのクエリが必要な場合は、次のように実行します。

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

それは私のために働いてくれてありがとう! –

関連する問題