首页 > 解决方案 > 检查数组类型的字段是否包含数组

问题描述

我使用猫鼬,我有以下user收集数据:

[{
    "_id": "1",
    "notes": [
        {
            "value": "A90",
            "text": "math"
        },
        {
            "value": "A80",
            "text": "english"
        },
        {
            "value": "A70",
            "text": "art"
        }
    ]
},
{
    "_id": "2",
    "notes": [
        {
            "value": "A90",
            "text": "math"
        },
        {
            "value": "A80",
            "text": "english"
        }
    ]
},
{
    "_id": "3",
    "notes": [
        {
            "value": "A80",
            "text": "art"
        }
    ]
}]

我将以下数组作为参数:[ "A90", "A80" ]
所以我想进行查询以使用此数组仅返回在 notes(值)表中具有所有数组项的记录。
因此,对于上面的示例,它将返回:

[{
    "_id": "1",
    "notes": [
        {
            "value": "A90",
            "text": "math"
        },
        {
            "value": "A80",
            "text": "english"
        },
        {
            "value": "A70",
            "text": "art"
        }
    ]
},
{
    "_id": "2",
    "notes": [
        {
            "value": "A90",
            "text": "math"
        },
        {
            "value": "A80",
            "text": "english"
        }
    ]
}]

我尝试了以下查找查询:

{ "notes": { $elemMatch: { value: { $in: valuesArray } } }} 

但即使 valuesArray 中只有一个元素存在,它也会返回一条记录。

标签: mongodbmongoosemongodb-query

解决方案


结果很容易:

find({ "notes.value": { $all: arrayValues } })

推荐阅读