如何为数组中的$all形成猫鼬查询

How to form mongoose query for $all in array

本文关键字:查询 all 数组      更新时间:2023-09-26

给定此集合:

    [{
        "users": [{
            "name": "one"
        }, {
            "name": "two"
        }]
    }, {
        "users": [{
            "name": "one"
        }, {
            "name": "three"
        }]
    }, {
        "users": [{
            "name": "fifteen"
        }, {
            "name": "one"
        }]
    }]

如何使用值(即 "one""two" )进行查询,以便 findOne 方法仅返回同时具有"name":"one""name":"two"的文档(顺序不相关)?users数组将始终有 2 个元素,不多也不少。

我正在尝试类似以下内容:

Collection.findOne({"users":{$all:["one", "two"]}})

但它不起作用。谁能帮忙?

编辑:最新尝试:

Collection.findOne({"users":{"name": {$all:["one","two"]}}})

试试这个:

{"users": {$all: [{"name": "one"}, {"name": "two"}]}}

或者使用JohnnyHK提议的点符号。

请参阅此处如何使用$all:https://docs.mongodb.org/manual/reference/operator/query/all/

编辑:数据已更改。

为此,

您可以使用点表示法来标识数组中应应用 $all 运算符的特定字段:

Collection.findOne({'users.name': {$all: ['one', 'two']}})