样本数据:
[{
"_id": "529532bee0ea703842000003",
"patientId": "123",
"name": {
"firstName": "John",
"family": "Smith"
},
"diet": [{
"_id": "1",
"mealtType": "Break Fast",
"timeofMeal": "2013-11-12T03:05:06.000Z",
"status": "I",
"calorie": {
"value": 500,
"unit": "cals"
}
},
{
"_id": "1",
"mealtType": "Break Fast",
"timeofMeal": "2013-11-12T03:05:06.000Z",
"status": "A",
"calorie": {
"value": 550,
"unit": "cals"
}
}]
}]
Run Code Online (Sandbox Code Playgroud)
我想在节点中使用mongoose仅获取给定patientId('123')的活动(状态'A')嵌入文档(饮食文档).
这是我的猫鼬查询:
query.where('patientId', 123)
.where('diet').elemMatch(function(elem) {
elem.where('_id', 1)
elem.where('status', 'A')
})
Run Code Online (Sandbox Code Playgroud)
Mongoose在查询下面生成,它为患者提供嵌入式阵列饮食中的所有元素.
Mongoose: patients.find({ diet: { '$elemMatch': { _id: '1', status: 'A' } }, patientId: '123' })
Run Code Online (Sandbox Code Playgroud)
无论Mongo Shell的状态如何,上面的查询都会获取所有子文档. …