Arrays 如何在一个数组中搜索另一个数组中的值,并将找到的值的索引输出到[mongodb]中的新数组中
我在每个文档中都有一个集合,它是一个数组字段,我想在其中搜索另一个数组中出现的元素,并输出作为数组找到的元素的索引 例如: 我有一份关于foo字段的文件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 = [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"]}
}
}
}}
])
只是在输入数组后缺少一个逗号。放了这个之后,它对我非常有效。谢谢你的回答。