MongoDB: объединить несколько числовых значений в строку - PullRequest
1 голос
/ 03 августа 2020

У меня есть документ (внутри агрегации, после стадии $group), в котором есть объект (но я мог бы сформировать массив, если бы это было нужно) со значениями number.

MongoPlayground пример с данными и моим сводным запросом, доступным здесь.

И я хочу создать новое поле _id на следующем этапе $project, состоящее из этих трех number значений, например:

   item_id | unix time | pointer
_id: 453435-41464556645@1829

Проблема в том, что когда я пытаюсь использовать $concat, запрос возвращает мне ошибку, например:

$concat only supports strings, not int

Итак, вот мой вопрос : возможно ли добиться таких результатов? Я видел соответствующий вопрос MongoDB объединяет строки из двух полей в третье поле , но это не касается моего случая.

1 Ответ

1 голос
/ 03 августа 2020

$ concat только объединяют строки, эти поля $_id.item_id содержат значение int и $_id.last_modified двойное значение,

$ toString преобразует значение в строка,

_id: {
  $concat: [
    {
      $toString: "$_id.item_id"
    },
    " - ",
    {
      $toString: "$_id.last_modified"
    }
  ]
}

Детская площадка: https://mongoplayground.net/p/SSlXW4gIs_X

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...