如何查询嵌套对象的对象数组?

问题描述 投票:0回答:0

这是我的mongodb中的一个文档:

{
    "_id": {
        "$oid": "64c7d4d7711f2703209bd076"
    },
    "identifiers": {
        "pCode": "P3842"
    },
    "contact": [
        {
            "phone": {
                "home": "000000",
                "work": "000000 Ext 838",
                "mobile": "0000000",
                "primary": "000000"
            },
            "email": {
                "home": "[email protected]",
                "work": null,
                "primary": "[email protected]"
            },
        },
    ],
    "children": [
        {
            "student": {
                "$oid": "64c7d48e711f2703209bd075"
            },
            "relationship": "Father",
            "billPayer": true,
            "courtOrder": false
        }
    ],
    "meta": {
        "createdDTM": "2018-02-10 07:35:45.000000",
        "updatedDTM": "2022-02-10 12:12:36.000000",
        "lastModifiedDTM": "2023-07-31 15:50:22"
    },
    "__v": 0
}

我正在尝试检查

contact
对象的
email
数组中是否有任何键(
home
work
primary
)的电子邮件 ID 等于
"[email protected]"

我尝试使用

$elemMatch
运行,但结果是
null

 {
    contact: { $elemMatch: { email: "[email protected]" } },
 }

不知道自己哪里错了。

更新:使用

$or
尝试了此查询,这给了我结果,但我想知道是否还有其他查询可以更好。

还修复了缩进

{$or: [
        {
            "contact.email.home": "[email protected]"
        },
        {
            "contact.email.work": "[email protected]"
        },
        {
            "contact.email.primary": "[email protected]"
        }
    ]
}
mongodb mongoose mongodb-query
© www.soinside.com 2019 - 2024. All rights reserved.