2017-10-20 93 views
0

我有一個像下面這樣的代碼。如何在mongodb中的文檔數組中找到元素?

router.get('/Child_Profile/:SchoolId/:childId',function(req,res,next){ 
childModel.find({"schoolid":req.params.SchoolId,"students[]":req.params.ChildId}, function (err, result) {  
     if (err) 
      { 
      return console.log(err); 
     } 
    res.json(result); 
     }); 
    }); 

防爆系列

{ 
"schoolid":"1wer", 
"students":["121","232"], 
"profilepic":"http://wed" 
} 

雖然我發現使用schoolid學生信息和studentid上面的架構中,只有schoolid發現,不與studentid。在此先感謝

+0

AM 「學生」: 「121232」],或許應該是 「學生」: 「121」, 「232」]?你有那裏字符串「121,232」你使用該值或121搜索? –

+0

儘管如此,我使用$,它只是與schoolid進行比較。我用像下面的childModel.find({$和:[{「schoolid」:req.params.SchoolId},{「students []」:req.params.ChildId}]},function(err,result){ –

+0

yeah..its「students」:[「121」,「232」] –

回答

1

您已經使用students as an array - students[],只使用學生並傳遞studentid的值,查詢將返回結果。

Mongo shell query for the collection 

{ 
     "_id" : ObjectId("59e9cfd4f4896dbabfc15f45"), 
     "schoolid" : "1wer", 
     "students" : [ 
       "121", 
       "232" 
     ], 
     "profilepic" : "http://wed" 
} 

db.collection.find({students:"121"}); 

修改後的查詢

router.get('/Child_Profile/:SchoolId/:childId',function(req,res,next){ 
childModel.find({"schoolid":req.params.SchoolId,"students":req.params.ChildId}, function (err, result) {  
     if (err) 
      { 
      return console.log(err); 
     } 
    res.json(result); 
     }); 
    }); 
+0

已經試過了,它顯示了一個空數組 –

+0

請檢查'req.params.ChildId'的值,並檢查您可以查詢直接傳遞值(這裏''學生':'123'',看看結果是什麼。 –

+0

是啊...它的工作。謝謝Dude ....其實,錯誤代替了ChildId,我給了childId。 –

相關問題