Mongodb: bir dizeyi bir alt dize dizisine nasıl bölebilirim?
MongoDB’de bir dizeyi bir alt dize dizisine bölmek için aşağıdaki sözdizimini kullanabilirsiniz:
db.myCollection.aggregate([ { $project : { split_field: { $split : [ " $field1 ", " " ] } } }, { $merge : "myCollection" } ])
Bu özel örnek, “field1” dizesini boşluklara dayalı olarak “split_field” adlı yeni bir alana böler ve yeni alanı myCollection adlı koleksiyona ekler.
Aşağıdaki örnek, bu sözdiziminin , aşağıdaki belgelere sahip bir koleksiyon ekibiyle pratikte 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: MongoDB’de bir String’i Alt String Dizisine Bölme
“Ad” sütunundaki dizeyi bir dize dizisine bölmek ve sonuçları ekipler koleksiyonundaki “split_name” adlı yeni bir alanda görüntülemek için aşağıdaki kodu kullanabiliriz:
db.teams.aggregate([ { $project : { split_name: { $split : [ " $name ", " " ] } } }, { $merge : "teams" } ])
Güncellenen koleksiyon artık şöyle görünüyor:
{ _id: ObjectId("62014a924cb04b772fd7a938"), name: 'Dallas Mavs', points: 31, split_name: ['Dallas', 'Mavs'] } { _id: ObjectId("62014a924cb04b772fd7a939"), name: 'San Antonio Spurs', points: 22, split_name: ['San', 'Antonio', 'Spurs'] } { _id: ObjectId("62014a924cb04b772fd7a93a"), name: 'Houston Rockets', points: 19, split_name: ['Houston', 'Rockets'] } { _id: ObjectId("62014a924cb04b772fd7a93b"), name: 'Boston Celtics', points: 26, split_name: ['Boston', 'Celtics'] } { _id: ObjectId("62014a924cb04b772fd7a93c"), name: 'Cleveland Cavs', points: 33, split_name: ['Cleveland', 'Cavs'] }
Her belgenin, “isim” alanının bir dizi alt dizesini içeren “split_name” adında yeni bir alana sahip olduğunu unutmayın.
Bu özel örnek için, orijinal dizeyi sınırlayıcı olarak bir boşluk kullanarak bölmeyi seçtik.
Dize farklı bir sınırlayıcıyla ayrılmışsa (tire, eğik çizgi, iki nokta üst üste vb. gibi), $split işlevinde bu sınırlayıcıyı kullanmanız yeterlidir.
Not : $split 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: Alanın bir dize içerip içermediği nasıl kontrol edilir
MongoDB: Yeni bir alan nasıl eklenir
MongoDB: Bir alan nasıl silinir