2017-02-22 12 views
0

mongoのfindOne()で返されるドキュメントがあります。その文書の中で(位置IDが2の)、私たちはitems配列を持っています。アイテムの中にニケネームがあります。現在、これはnicenameが一致するものだけでなく、すべてのアイテムを返します。ありがとう!配列内のMongo findOne

Menu.findOne({location:'2', 'items.nicename':req.params.whatever}).exec() 
 
    .then(function(item) { 
 
     res.render('pages/menuitem', {'item':item}); 
 
    }).catch(function(err) { 
 
     console.log(err); 
 
    });

答えて

3

あなたのパラメータが一致するものを打ったときモンゴ見つける/ findOne /集合体は、サブ文書を含め、文書全体を返します。だからあなたはMongoに伝える必要があります。ちょっと私の文書を見つけたので、私は本当にこれらの部分だけを望んでいます。 「投影」の出番だ。

Menu.findOne({location:'2'},{'items':{$elemMatch: {'nicename': req.params.whatever}) 

あなたは返して欲しいすべてのキーをモンゴ伝えるために必要がある1つを構築し始めると予測に関するものがあります。例えば、私はあなたの構造が

Menu.findOne({location:'2','items.nicename':req.params.whatever},{ 
    'location':1, 
    'items':{$elemMatch: {'nicename': req.params.whatever} 
}) 
を次の操作を行い、必要ならば場所はあなたがfindOneで両方のパラメータが必要な場合は、次の

Menu.findOne({location:'2'},{ 
    'location':1, 
    'items':{$elemMatch: {'nicename': req.params.whatever} 
}) 

を行う必要があるだけでなく返されたので、その中に「場所」を持って知っています

+0

これはあなたに感謝のソリューションです! $ elemMatchが修正されました – webwrks

関連する問題