Есть ли способ преобразовать строку (формат: "1,5,20,22") в массив целых чисел ([1,5, 20, 22]) во время агрегации MongoDB? - PullRequest
0 голосов
/ 19 февраля 2020

Я работал с MongoDB Метабаза ). Метабаза способ поиска основан на Пн go конвейерах агрегации.

Для людей, которые не знают, Метабаза позволяет нам создайте диаграммы , и вы можете определить фильтры для этих диаграмм и использовать эти фильтры в своем запросе Пн go.

В любом случае, я могу использовать только типы фильтров есть: Строка , Число и Дата .

Но у меня есть запрос, который мне нужно проверить, если значение поля $ in некоторый массив.

Итак, я не могу отправить массив в качестве фильтра. Одно число не будет работать.

Моя идея состояла в том, чтобы передать String (формат: "1,3,5,20" ), а затем преобразовать эту строку в массиве чисел.

Есть ли простой способ сделать это за один "выстрел" в понедельник go Агрегация? Я пытаюсь не полагаться на несколько этапов конвейера

Я знаю, что могу использовать split для генерации моего массива, но оттуда мне нужно будет преобразовать все значения в моем новом массиве строк в целочисленных значениях.

Есть идеи?

1 Ответ

1 голос
/ 20 февраля 2020

Вы должны иметь возможность использовать $ map , возможно:

{$project:{
   arrayField: {$map: {
      input: {$split: ["$stringField",","]},
      as: "elem",
      in: {$toInt: "$$elem"}
   }}
}}

Детская площадка

...