小编use*_*269的帖子

elemMatch与Mongoose中的其他查询字段结合使用

样本数据:

[{
    "_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的状态如何,上面的查询都会获取所有子文档. …

mongoose mongodb

3
推荐指数
1
解决办法
5241
查看次数

标签 统计

mongodb ×1

mongoose ×1