Эквивалентный метод замены SQL в данных пружины mongoDB - PullRequest
0 голосов
/ 07 апреля 2020

Я ищу запрос в spring data mongodb, который выглядит примерно так:

 ?#{ [2] == null ? { $where : 'true'} : { 'vehicle.immatriculation' : {'$regex' : {'$replaceAll':[2],'-',''}, $options : 'x'} } }"

Возможно ли сделать этот тип запроса? Я застрял, потому что не могу найти эквивалент для замены SQL

EDITION

In SQL

    SELECT colonne1, colonne2, REPLACE(colonne3, '-', '')
    FROM table

1 Ответ

1 голос
/ 07 апреля 2020

Эта функция еще не существует. SERVER-32314 - это запрос функции для добавления $replaceOne и $replaceAll в качестве операторов агрегирования. Похоже, что этот запрос может быть в следующем выпуске, но он не сделал сокращение для MongoDB 4.2

Этот билет сервера также предлагает обходной путь. Я адаптировал этот пример к вашей структуре, но я недостаточно знаком с Spring, чтобы дать вам этот синтаксис. Вот это в mon go shell javascript, возможно, кто-то еще может перевести это на Java.

db.collection.aggregate([{$project:{
  _id:0,
  colonne1:1, 
  colonne2:1, 
  colonne3:{$let:{
     vars:{split:{$split:["$colonne3","-"]}},
     in:{$reduce:{
        input:{$slice:["$$split",1,{$size:"$$split"}]},
        initialValue:{$arrayElemAt:["$$split",0]},
        in:{$concat:["$$value","$$this"]}
     }}
  }}
}}])
...