Преобразование синтетической функции «<<» в Scala в команду MongoDB

Я пытаюсь обновить некоторые поля в MongoDB Shell с помощью aggregation framework. На самом деле я хочу преобразовать IP-адреса в настоящее время как тип String в тип collection в тип Long, поэтому мне нужно преобразовать следующий код scala в команду MongoDB:

   def ipv4ToLong(ip: String): Option[Long] = Try(
     ip.split('.').ensuring(_.length == 4)
       .map(_.toLong).ensuring(_.forall(x => x >= 0 && x < 256))
       .reverse.zip(List(0,8,16,24)).map(xi => xi._1 << xi._2).sum
   ).toOption

Я смог преобразовать большую часть этого с помощью Документация по агрегации MongoDB, но у меня возникли проблемы с этой частью: xi._1 << xi._2

Из подсказок моей IDE; Я вижу, что это (<<) является синтетической функцией, относящейся к scala byte (как видно здесь) и определяется как:

Returns this value bit-shifted left by the specified number of bits, filling in the new right bits with zeroes.

Есть идеи, есть ли аналогичная функция для использования в командах или операторах MongoDB? Или альтернативное решение.

3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
0
88
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я ненавижу отвечать на свой вопрос - всегда лучше, если кто-то может помочь, но, к сожалению, не в этом случае, и это может сэкономить кому-то время. В конце концов мне удалось найти дополнительную информацию о операторы битового сдвига здесь. Я вижу, что функция << принимает два числовых типа (например, Long, Int и т. д.), и, как было предложено, биты сдвигаются влево. Как уже упоминалось; Я пытаюсь приравнять это к реализации в MongoDB, поскольку эквивалентной функции нет. Но эта ссылка была эффективной в разрушении этого. Так:

    a << b = a * 2^b

И с использованием операторов MongoDB (как изначально предполагалось) это будет:

    $multiply: [a, { $pow: [2, b]}]

Другие вопросы по теме