2016-04-11 19 views
0

私はこの質問を全部探してきましたが、私は答えを見つけることができなかった理由を探すために正確な言葉を見つけることができないようです。とにかくここにその場合:findOne in findOne result

私はユーザーのリストを持って、各ユーザーは友人のリストを持っています。 (ユーザーは同じ友人を持つことができます)。私は最初にIDでfindOneを、次に彼の友人のリストで友人を探したい。

User : 
{ firstUser, secondUser } 

firstUser: { name, friendList } 
secondUser: {name, friendList } 

friendList (of firstUser) : { 
     { name: Jhon Doe, age: 5 } 
     { name: mickey, age: 23 } 
} 

friendList (of secondUser) : { 
     { name: Jhon Doe, age: 5 } 
     { name: jane, age: 23 } 
} 

ご覧のとおり、私は$ elemMatchと$ inを使用できません。両方のユーザーが同じ友達を持つことができるからです。 、関数(ERR、ユーザ){ VARの友人=ユーザー:

答えて

0
User.findOne({id: req.query._id }, function(err, user){ 
      //what to do here? 
    }); 

お友達のIDを持っていると仮定すると、あなただけvar friend = user.friendList.id(friendId);

+0

User.findOne({req.query._id ID}を呼び出すことになります.friendList.id(friendId); リターンフレンド; //これは正しいですか? }); –

+0

いいえ - '返品友人 'は何もしません。コールバック内で 'friend'オブジェクトを使用する必要があります。他の関数を呼び出すか、必要な処理を行いますが、これは外部リソースからの非同期コードの読み込みであり、コールバックから戻ることは何もしません –

+0

残念ながら、私は友人リストを 'unique_id'で検索しているので、.idを使用せずにサブ文書を見つけるには別の方法が必要です。 –