別のクエリのための必要はありません、あなたはまだ同じ集約演算を実行することができますが、この時間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);
質問が表示され、うまく整形されますか?私はあなたの質問から、直接関連性のない資料を整理しました。[緊急を要請するのはここではうまくいきません](http://meta.stackoverflow.com/q/326569)。 – halfer
2つの異なるテーブルを同時に照会しますか? –