如何在猫鼬中找到数组内的对象?

How to find Object inside array in mongoose?

这是数据库的样子

[
//document1
    {
        "email": "raj@gmail.com",
        "cart": [
            {
                "id": 4,
                "name": "Pen",
            }
        ]
    },
//document2
    {
        "email": "vishal21@gmail.com",
        "cart": [
            {
                "id": 42,
                "name": "Ball",
            }
        ]
    }
]

如何编写 mongoose 查询以使用电子邮件在特定文档中查找购物车内的项目。 例如,我需要带有电子邮件“raj@gmail.com”

的文档购物车中 ID 为 4 的商品
  1. 查找电子邮件为“raj@gmail.com”的文档
  2. 在购物车数组的文档中找到 ID 为“4”的项目

您可以尝试运行这个查询

  db.collection.find({
  email: "raj@gmail.com",
  cart: {
    $elemMatch: {
      id: 4
    }
  }
})

我先是用邮箱地址查询的。然后在数组中我使用了 elemMatch for obj 来匹配 id