如何在mongoDB中查找包含所有指定数组值的所有文档?

时间:2017-06-05 16:28:50

标签: arrays mongodb database

这是我的收藏品

{
    "_id" : ..., 
    "name" : "sport", 
}
{
    "_id" : ..., 
    "name" : "art", 
}
{
    "_id" : ..., 
    "name" : "cars", 
}

这是我得到的数组["cars","sport"] 我只是想确保我的收藏中有cars sport,如果没有(或者只有一个不存在)我想收到没有即可。 我正在寻找类似于数组的查询,例如 $ in ,但模式。

2 个答案:

答案 0 :(得分:0)

这就是你在寻找...... ??

db.colllection.find( {$and: [ {"name": {$in: ["cars"]}}, {"name": {$in: ["sports"]}} ] })

答案 1 :(得分:0)

以下查询应该可以帮助您实现此目标

//change test with your collection name
db.getCollection('test').aggregate(
    {
        $group: {
            _id: "collectionOfNames",
            "names": {$addToSet: "$name"}
        }
    },
    {
        $match: {"names": {$all: ["cars", "sport"]}}

    }
)

我们使用$ group在所有文档中创建属性 name 的数组“名称”。 然后使用$ match和$all检查以确保数组“names”包含查询数组中的所有元素。

这是你在找什么?