Как удалить часть строки Monogdb - PullRequest
1 голос
/ 05 января 2020

Я пытаюсь удалить все после первого \ n в этой строке:

https://media.test.com/$main$\n \n https://media.xl?$desktop$\n \n https://media.com/$desktop/\n \n

Collection; {id: .... class: "Apple" URL: "https://media.test.com/ $ main $ \ n \ n https://media.xl? $ desktop $ \ n \ n https://media.com/ $ desktop / \ n \ n "

Таким образом, желаемый вывод, отфильтруйте по классу:« Яблоки »и превратите URL в:

https://media.test.com/$main$

Любая помощь будет принята с благодарностью.

Спасибо!

Ответы [ 2 ]

1 голос
/ 05 января 2020

$ indexOfBytes возвращает первое вхождение данной подстроки, поэтому вы можете использовать ее вместе с $ substr , чтобы найти свою первую \n и получить подстроку:

db.collection.aggregate([
    {
        $project: {
            newString: { $substr: [ "$str", 0, { $indexOfBytes: [ "$str", "\n" ] } ] }
        }
    }
])

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

0 голосов
/ 06 января 2020

Это то, что я уже дал вышеупомянутому комментарию;

db.collection.aggregate([
  {
      $match: {
           class: "Apples"
      }
  },
  {
        $project: {
        newString: { $substr: [ "$str", 0, { $indexOfBytes: [ "$str", "\n" ] } ] }
        }
    }
])

получаю ошибку; Сообщение об ошибке из этого: «errmsg»: «$ substrBytes: длина должна быть числовым c типом (является нулевым типом BSON)»,

...