猫鼬查询基于嵌套文档中的值列出文档

时间:2020-08-10 09:35:43

标签: mongodb mongoose mongodb-query

在这段代码中,我试图根据猫鼬查询的产品尺寸来匹配文档。 我尝试了此查询,但没有用。谁能告诉我这段代码有什么问题吗?

查询我已通过:
{ $match: { "product_items.product_size": { value: 22, unit: "ml" } } }

**结构:**

  [
    {
            "product_name": "sample product",
            "product_items": [
                {
                    "product_item_number": "796363011028",
                    "product_size": {
                        "value": 22,
                        "unit": "ml"
                    }
                }
            ]
        }
]

1 个答案:

答案 0 :(得分:1)

这种方法行不通,因为product_items.product_size的值是对象数组,而您正在尝试将单个对象与该数组进行比较。在处理对象数组时使用$elemMatch更可靠:

db.collection.aggregate([
    {
        $match: {
            "product_items": {
                $elemMatch: {
                    "product_size.value": 22,
                    "product_size.unit": "ml"
                }
            }
        }
    }
])

Mongo Playground