Как искать в массиве значения, присутствующие в другом массиве, и выводить индексы значений, найденных в новый массив в [mongodb] - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть Коллекция, в каждом документе есть поле массива, и я хочу найти в нем элементы, которые находятся в другом массиве, и вывести индексы элементов, которые находятся в виде массива.

Например:

У меня есть документ с полем 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, но не могу заставить его работать.

1 Ответ

0 голосов
/ 12 сентября 2018

Вы можете использовать $map выражение.

db.collection.aggregate([
  {"$project":{
      "output":{
        "$map":{
         "input":[3,6],
         "in":{"$indexOfArray":["$foo","$$this"]}
        }
      }
   }}
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...