Mongodb: jak korzystać z funkcji $susbtr


Możesz użyć funkcji $substr w MongoDB, aby wyodrębnić podciąg z ciągu.

Ta funkcja wykorzystuje następującą podstawową składnię:

 db.myCollection.aggregate([
  { $project : {substring: { $substr : [ " $fullstring ", 0, 4 ] }}}
])

Ten konkretny przykład wyodrębnia wszystkie cztery znaki z pola oznaczonego „fullString”, zaczynając od pozycji 0.

Poniższy przykład pokazuje, jak w praktyce zastosować tę składnię w przypadku sprzedaży kolekcjonerskiej z następującymi dokumentami:

 db.sales.insertOne({yearMonth: 201702, amount: 40 })
db.sales.insertOne({yearMonth: 201802, amount: 32 })
db.sales.insertOne({yearMonth: 201806, amount: 19 })
db.sales.insertOne({yearMonth: 201910, amount: 29 })
db.sales.insertOne({yearMonth: 201907, amount: 35 })

Przykład: Jak używać funkcji $susbtr w MongoDB

Możemy użyć poniższego kodu, aby wyodrębnić pierwsze cztery znaki z pola „rokMiesiąc” i wyświetlić je w nowym polu o nazwie „rok”:

 db.sales.aggregate([
  { $project : {year: { $substr : [ " $yearMonth ", 0, 4 ] }}}
])

Ten kod generuje następujący wynik:

 { _id: ObjectId("620145544cb04b772fd7a929"), year: '2017' }
{ _id: ObjectId("620145544cb04b772fd7a92a"), year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92b"), year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92c"), year: '2019' }
{ _id: ObjectId("620145544cb04b772fd7a92d"), year: '2019' }

Należy pamiętać, że pierwsze cztery znaki pola „miesiącRok” każdego dokumentu są wyświetlane w nowym polu oznaczonym „rok”.

Należy zauważyć, że ten kod wyświetla tylko podciąg.

Aby faktycznie dodać nowe pole do kolekcji zawierającej ten podciąg, musimy użyć funkcji $merge w następujący sposób:

 db.sales.aggregate([
  { $project : {year: { $substr : [ " $yearMonth ", 0, 4 ] }}},
  { $merge : "sales" }
])

Tak wygląda teraz zaktualizowana kolekcja:

 { _id: ObjectId("620145544cb04b772fd7a929"),
  yearMonth: 201702,
  amount: 40,
  year: '2017' }
{ _id: ObjectId("620145544cb04b772fd7a92a"),
  yearMonth: 201802,
  amount: 32,
  year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92b"),
  yearMonth: 201806,
  amount: 19,
  year: '2018' }
{ _id: ObjectId("620145544cb04b772fd7a92c"),
  yearMonth: 201910,
  amount: 29,
  year: '2019' }
{ _id: ObjectId("620145544cb04b772fd7a92d"),
  yearMonth: 201907,
  amount: 35,
  year: '2019' }

Należy pamiętać, że do każdego dokumentu w kolekcji dodano nowe pole zatytułowane „rok”, w którym wyświetlane są pierwsze cztery znaki pola „rokMiesiąc”.

Uwaga : Pełną dokumentację funkcji $substr można znaleźć tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe operacje w MongoDB:

MongoDB: Jak sprawdzić, czy pole zawiera ciąg znaków
MongoDB: Jak połączyć ciągi dwóch pól
MongoDB: Jak zamienić ciągi znaków

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *