Я пытаюсь обновить некоторые поля в оболочке MongoDB
, используя 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;Я вижу, что this (<<
) является синтетической функцией, относящейся к scala byte
(, как видно здесь ), и определяется как:
Возвращает это значение со сдвигом в битахоставленный указанным числом битов, заполняя новые правые биты нулями.
Есть идеи, есть ли подобная функция для использования в командах или операторах MongoDB
?Или альтернативное решение.