Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays MongoDB查找数组的交集_Arrays_Mongodb - Fatal编程技术网

Arrays MongoDB查找数组的交集

Arrays MongoDB查找数组的交集,arrays,mongodb,Arrays,Mongodb,文件: 想要获得: order1.filter = ['tag1','tag2'] order2.filter = ['tag1','tag2','tag3'] 所有价值观​​order.filter必须在查询数组中 怎么做?已尝试的指令$all,$in:(您可以使用聚合框架完成此操作(据我所知,使用常规查找无法完成此操作) 我认为这基本上是为了调整字段的代码,得到如下结果: query ['tag1','tag2'] -> (only order1) query ['tag1','ta

文件:

想要获得:

order1.filter = ['tag1','tag2']
order2.filter = ['tag1','tag2','tag3']
所有价值观​​order.filter必须在查询数组中


怎么做?已尝试的指令$all,$in:(

您可以使用聚合框架完成此操作(据我所知,使用常规查找无法完成此操作)

我认为这基本上是为了调整字段的代码,得到如下结果:

query ['tag1','tag2'] -> (only order1)
query ['tag1','tag2','tag3'] -> (order1 and order2)
query ['tag1','tag2','tag3','tag4', etc ] -> (order1 and order2)

and

query ['tag1','tag3'] -> (null)
query ['tag2','tag3'] -> (null)

对不起,我不明白问题是关于什么的。我也不明白。可能是重复的
//sample documents:
> db.docs.find({},{_id:0})
{ "order" : 1, "filter" : [ "t1", "t2" ] }
{ "order" : 2, "filter" : [ "t1", "t2", "t3" ] }
var tagArray = [ "t1", "t2" ];   // array to "match"
db.docs.aggregate( [
    {
        "$project" : {
            "order" : 1,
            "filter" : 1,
            "killFlag" : {
                "$const" : [
                    true,
                    false
                ]
            }
        }
    },
    {
        "$unwind" : "$filter"
    },
    {
        "$unwind" : "$killFlag"
    },
    {
        "$match" : {
            "$nor" : [
                {
                    "filter" : {
                        "$in" : tagArray
                    },
                    "killFlag" : true
                }
            ]
        }
    },
    {
        "$group" : {
            "_id" : "$order",
            "filter" : {
                "$addToSet" : "$filter"
            },
            "killFlag" : {
                "$max" : "$killFlag"
            }
        }
    },
    {
        "$match" : {
            "killFlag" : false
        }
    },
    {
        "$project" : {
            "_id" : 1,
            "filter" : 1
        }
    }
]);