我找不到正确的值,用mongodb,mongoose和nodejs查询嵌套数组

时间:2016-08-10 17:25:31

标签: node.js mongodb mongoose

亲爱的stackoverflow社区,

我通常不会在这里发帖,但这次我问自己为什么不呢?,2小时后没有得到解决方案。

这个是非常基本的,但涉及一个特定的json模型,mongoose,mongodb和nodejs。

现在的问题是,我正在尝试获取user_ppal_id的数据:1和exam_design_id:1,user_ppal_id的搜索成功,但是进入嵌套数组的exam_design_id总是返回给我的值1和2(我通过参数传递exam_design_id 1)......

这是我的模型我的nodejs rest方法以及我如何使用mongoose,nodejs和mongodb 我的moongose模型,< strong>从Umongo Ide更好地了解模型:

SEE THE IMAGE HERE BECAUSE I AM NEW IN STACKOVERFLOW

所有结构都在工作,但结果中的数据不是我预期的结果。您只需点击此网址即可查看此休息服务的响应:http://207.244.75.230:8000/dyntestreports/getExamReport?idUserPpal=1&idExamDesign=1

在响应中,当我只传递值1时,我得到值1和2的exam_design_id数据。

实际上我尝试使用以下mongo查询,但我没有成功:

1)ExamReportByUser.find({'user_ppal_id':userPpalId,'exams_created':{$ elemMatch:{'exam_design_id':{$ eq:examDesignId}}}}

2)ExamReportByUser.find({ 'user_ppal_id':userPpalId, 'exams_created.0.exam_design_id':examDesignId}

此刻我甚至不知道我做错了什么,即使是从mongo控制台查询,我也无法让它仅适用于exam_design_id = 1数据。

我确定这可能是一个简单的错误,但我现在还没有看到它。

我真的希望你能帮助我们。提前致谢!祝你有愉快的一天。

1 个答案:

答案 0 :(得分:0)

我的坏!我刚刚找到了解决方案......而且我在这里发布它给那些有同样疑问的人......查询数据的代码应该是这样的(它只是键语法,基本的mongo):

ExamReportByUser.find( {'user_ppal_id':userPpalId},{'exams_created':{$ elemMatch:{'exam_design_id':examDesignId}}} ,'id user_ppal_id exams_created exam_design_id user_submitted_exam',function (错误,结果){if(错误)返回console.log(错误);返回res.send(result);}); };

现在我收到了用户1和exam_design 1的数据。

我不会选择这个作为答案,等待专家;)