Mongodb: bir dizenin uzunluğu nasıl bulunur?


MongoDB’de bir dizenin uzunluğunu bulmak ve bu dize uzunluğunu sorgularda kullanmak için aşağıdaki yöntemleri kullanabilirsiniz:

Yöntem 1: Zincirin uzunluğunu bulun

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

Yöntem 2: Dizesi belirli bir uzunluktan büyük olan belgeleri bulun

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

Aşağıdaki örnekler, her yöntemin aşağıdaki belgelere sahip bir koleksiyon ekibiyle nasıl kullanılacağını gösterir :

 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})

Örnek 1: Bir Dizinin Uzunluğunu Bulma

Her belgenin “name” alanındaki dizenin uzunluğunu hesaplamak için aşağıdaki kodu kullanabiliriz:

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

Bu kod aşağıdaki sonuçları döndürür:

 { _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 }

Uzunluk değeri “ad” sütunundaki dizenin uzunluğunu görüntüler.

Örneğin:

  • “Dallas Mavs” zincirinin uzunluğu 11 dir.
  • ‘San Antonio Spurs’ zincirinin uzunluğu 17’dir .

Ve benzeri.

Uzunluğun aynı zamanda boş alanları da saydığını unutmayın.

Örnek 2: Dizesi belirli bir uzunluktan büyük olan belgeleri bulun

Yalnızca “name” sütunundaki dize 14’ten büyük olan belgeleri döndürmek için aşağıdaki kodu kullanabiliriz:

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

Bu sorgu aşağıdaki sonuçları döndürür:

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

Geri dönen yalnızca iki takımın “isim” alanı 14’ten büyük olan takımlar olduğunu unutmayın.

Not : $strLenCP işlevine ilişkin tüm belgeleri burada bulabilirsiniz.

Ek kaynaklar

Aşağıdaki eğitimlerde MongoDB’de diğer yaygın işlemlerin nasıl gerçekleştirileceği açıklanmaktadır:

MongoDB: Bir dizeyi bir alt dize dizisine nasıl bölebilirim?
MongoDB: İki alanın dizeleri nasıl birleştirilir
MongoDB: Dizeler nasıl değiştirilir?

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir