Mongodb: jak znaleźć długość ciągu znaków


Możesz użyć następujących metod, aby znaleźć długość ciągu w MongoDB i użyć tej długości ciągu w zapytaniach:

Metoda 1: Znajdź długość łańcucha

 db.myCollection.aggregate([
  { $project : {
        "name": 1,
        "length": { $strLenCP : " $name " }
  }}
])

Metoda 2: Znajdź dokumenty, których ciąg znaków jest większy niż określona długość

 db.myCollection.find({ 
    "name": { $exists : true },
    $expr : { $gt : [ { $strLenCP : " $name " }, 14 ] } 
})

Poniższe przykłady pokazują, jak używać każdej metody w przypadku zespołu zbierającego z następującymi dokumentami:

 db.teams.insertOne({name: " Dallas Mavs ", points: 31})
db.teams.insertOne({name: " San Antonio Spurs ", points: 22})
db.teams.insertOne({name: " Houston Rockets ", points: 19})
db.teams.insertOne({name: " Boston Celtics ", points: 26})
db.teams.insertOne({name: " Cleveland Cavs ", points: 33})

Przykład 1: Znajdowanie długości sznurka

Możemy użyć następującego kodu, aby obliczyć długość ciągu znaków w polu „nazwa” każdego dokumentu:

 db.teams.aggregate([
  { $project : {
        "name": 1,
        "length": { $strLenCP : " $name " }
  }}
])

Ten kod zwraca następujące wyniki:

 { _id: ObjectId("62014eff4cb04b772fd7a93d"),
  name: 'Dallas Mavs',
  length: 11 }
{ _id: ObjectId("62014eff4cb04b772fd7a93e"),
  name: 'San Antonio Spurs',
  length: 17 }
{ _id: ObjectId("62014eff4cb04b772fd7a93f"),
  name: 'Houston Rockets',
  length: 15 }
{ _id: ObjectId("62014eff4cb04b772fd7a940"),
  name: 'Boston Celtics',
  length: 14 }
{ _id: ObjectId("62014eff4cb04b772fd7a941"),
  name: 'Cleveland Cavs',
  length: 14 }

Wartość długości wyświetla długość ciągu w kolumnie „nazwa”.

Na przykład:

  • Długość łańcuszka „Dallas Mavs” wynosi 11 .
  • Długość łańcucha „San Antonio Spurs” wynosi 17 .

I tak dalej.

Należy pamiętać, że długość uwzględnia również puste przestrzenie.

Przykład 2: Znajdź dokumenty, których ciąg znaków jest większy niż określona długość

Możemy użyć poniższego kodu, aby zwrócić tylko dokumenty, których ciąg w kolumnie „nazwa” jest większy niż 14 :

 db.teams.find({ 
    "name": { $exists : true },
    $expr : { $gt : [ { $strLenCP : " $name " }, 14 ] } 
})

To zapytanie zwraca następujące wyniki:

 { _id: ObjectId("62014eff4cb04b772fd7a93e"),
  name: 'San Antonio Spurs',
  points: 22 }
{ _id: ObjectId("62014eff4cb04b772fd7a93f"),
  name: 'Houston Rockets',
  points: 19 }

Należy pamiętać, że zwrócone zostały tylko dwie drużyny, których pole „nazwa” jest większe niż 14 .

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

Dodatkowe zasoby

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

MongoDB: Jak podzielić ciąg na tablicę podciągów
MongoDB: Jak połączyć ciągi dwóch pól
MongoDB: Jak zamienić ciągi w

Dodaj komentarz

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