答えに基づいて質問が更新されました。Mongodbの別のクエリの結果セットを使用して複雑なクエリを作成するにはどうすればよいですか?
[{ "current_course_id": "4f7fa4c37c06191111000005"、 "past_courses":[{そう...ダウン
を元の質問のスクロールを表示するには、これは私がstuColl.findコールの後で終わるJSONであります"course_id": "4f7fa4c37c06191111000003"}、{"course_id": "4f7fa4c37c06191111000002"}}}
ここで、上記のようにすべての教授IDを取得するための別の検索を行います。しかし、私が得たものはすべてヌルの結果です。私は非常に近いと思う。私は間違っています:
stuColl.find({_id : userId}, { 'current_course_id' : 1 , 'past_courses.course_id' : 1 , _id : 0 }).toArray(function(err, courseIdsArray)
{
db.collection('courses', function(err, courseColl)
{
courseColl.find({$or : [ {_id : 'courseIdsArray.current_courses_id' }, {_id : {$in : courseIdsArray.past_courses}} ]}, {'professor_ids' : 1}).toArray(function(err, professorIdsArray)
{
res.send(professorIdsArray);
});
});
});
何か助けてくれてありがとうございます!
私はmongo(mongoネイティブドライバを使用)、node.js、expressを使用してアプリケーションを作成しています。
私は学生、コース、教授の文書をmongoで持っています。
私は過去に服用している、または過去に服用しているすべての「教授」文書のリストを取得したいと考えています。
Students: {courseid, ....}
Course: {professors, ....}
Professors: {....}
これは私がやって上つもりです: 1.私は最初の学生のためのすべてのコースIDを取得するためにクエリを発行します。 2.次に、私はこれらのすべてのコースの教授IDを取得するために別のクエリを作成して発行する必要があります。 3.そして最後に、教授IDに関連するすべての「教授」文書を取得しなければなりません。
ステップ1は問題ではなく、すべてのコースIDを取得しました。しかし、私はstep2を行う方法がわかりません。ステップ2と3は似ていますが、ステップ2を理解すると簡単にステップ3になります。
基本的に、step2で1つのクエリを発行してすべての教授IDを取得します。私は、10のコースIDに対して10の別々のクエリを発行したくない。ここ
は私が持っているものです。
function getProfsByStudent(req, res, next)
{
db.collection('students', function(err, stuColl)
{
stuId = new ObjectID.createFromHexString(req.params.stuId);
stuColl.find({_id : userId}, { 'current_course_id' : 1 , 'past_courses.course_id' : 1 , _id : 0 })
{
db.collection('courses', function(err, courseColl)
{
courseColl.find({$or : []}) // THIS IS WHERE I AM STUCK
});
res.send(posts);
});
});
}
SU
coffeeyesplease、 応答に感謝します。 コードからわかるように、stuColl.findはトップレベルのcourseidを返しますし、コースIDの埋め込み配列も含むことができます。 $で両方のレベルを見ることができますか?またはtoArrayはオブジェクトレベルの1レベル配列に複数レベルの結果をフラット化できますか?もしそうでないなら、それを行うには良い方法がありますか? SU –
あなたの質問に答えるために、mongoはそれを平坦化しません。それが本当にあなたが探しているものなら、おそらくmapReduce関数が役立つかもしれません。これが助けられたら教えてください。 – coffeeyesplease
coffeeyesplease ....それだった。どうもありがとうございます。 –