如何在数组中为$ all形成mongoose查询

时间:2016-02-17 15:49:53

标签: javascript node.js mongodb mongoose

鉴于此系列:

    [{
        "users": [{
            "name": "one"

        }, {
            "name": "two"

        }]
    }, {
        "users": [{
            "name": "one"

        }, {
            "name": "three"

        }]
    }, {
        "users": [{
            "name": "fifteen"

        }, {
            "name": "one"

        }]
    }]

如何使用值(即"one""two")查询此内容,以便findOne方法仅返回两者的文档 {{ 1}} "name":"one"(订单不相关)? "name":"two"数组将始终包含2个元素,不多也不少。

我正在尝试以下方面:

users

但它不起作用。有人可以帮忙吗?

编辑:最新尝试:

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

2 个答案:

答案 0 :(得分:1)

试试这个:

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

或使用JohnnyHK提出的点符号。

请在此处查看$ all的使用方式:https://docs.mongodb.org/manual/reference/operator/query/all/

编辑:数据已更改。

答案 1 :(得分:1)

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

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