Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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_Aggregation Framework - Fatal编程技术网

Arrays 如何在一个数组中搜索另一个数组中的值,并将找到的值的索引输出到[mongodb]中的新数组中

Arrays 如何在一个数组中搜索另一个数组中的值,并将找到的值的索引输出到[mongodb]中的新数组中,arrays,mongodb,aggregation-framework,Arrays,Mongodb,Aggregation Framework,我在每个文档中都有一个集合,它是一个数组字段,我想在其中搜索另一个数组中出现的元素,并输出作为数组找到的元素的索引 例如: 我有一份关于foo字段的文件 { foo = [1,4,3,6,6], foo = [1,5,7,5,8], foo = [2,4,3,1,6], foo = [1,4,9,6,7] } 以及包含要搜索的元素的数组 bar = [3,6] 我希望输出是 {output = [2,3]} {output =

我在每个文档中都有一个集合,它是一个数组字段,我想在其中搜索另一个数组中出现的元素,并输出作为数组找到的元素的索引

例如:

我有一份关于foo字段的文件

{
        foo = [1,4,3,6,6],
        foo = [1,5,7,5,8],
        foo = [2,4,3,1,6],
        foo = [1,4,9,6,7]
}
以及包含要搜索的元素的数组

bar = [3,6]
我希望输出是

{output = [2,3]}
{output = [-1,-1]}
{output = [2,4]}
{output = [-1,3]}

我曾尝试将聚合管道和映射函数与$indexOfArray一起使用,但似乎无法使其正常工作。

您可以使用
$map
表达式

db.collection.aggregate([
  {"$project":{
      "output":{
        "$map":{
         "input":[3,6],
         "in":{"$indexOfArray":["$foo","$$this"]}
        }
      }
   }}
])

只是在输入数组后缺少一个逗号。放了这个之后,它对我非常有效。谢谢你的回答。