首页 > 解决方案 > 如何在数组中搜索另一个数组中存在的值并将找到的值的索引输出到 [mongodb] 中的新数组中

问题描述

我在每个文档中有一个 Collection 是一个数组字段,我想搜索它以查找另一个数组中元素的出现,并将找到的元素的索引作为数组输出。

例如:

我有一个带有 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 一起使用,但似乎无法使其工作。

标签: arraysmongodbaggregation-framework

解决方案


您可以使用$map表达式。

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

推荐阅读