2017-10-20 3 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

오전 "학생": "121232", 어쩌면해야한다 "학생": "121", "232"]? 거기에 문자열 "121,232"가 있습니까? 그 값 또는 121을 사용하여 검색합니까? –

+0

비록 $을 사용했지만 학교와 비교했을뿐입니다. 나는 다음과 같은 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'의 값을 확인하고 가능한 쿼리를 확인하십시오 그 값을 직접 전달하십시오 (여기에''students ":"123 "'). 결과는 무엇입니까? –

+0

예 ... 그 일. 고마워요. 사실, 실수는 ChildId 대신에, 나는 아이를 낳았습니다. –