检查类型为数组的字段是否包含数组

时间:2019-09-11 16:02:18

标签: mongodb mongoose mongodb-query

我正在使用猫鼬,我有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" ]
因此我想查询使用此数组的查询,以仅返回具有注释(值)表中所有数组项的记录。
因此,对于上面的示例,它将返回:

[{
    "_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中仅存在一个元素,它也会返回一条记录。

1 个答案:

答案 0 :(得分:0)

事实证明很容易:

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