2017-10-20 94 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。 –

相关问题