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?