MongoDB'nin 3.4 versiyonundan önce dile özel sort işlemleri yapamıyorduk. 3.4 versiyonu ile birlikte bu işlem mümkün olabilir hale geldi. Bu problem özellikle Türkçe karaktere göre sıralamamız gereken kayıt setlerin sorun çıkarabiliyordu. Örneklerimizde hem yerli istemci ile hem de C# driver üzerinden nasıl sıralama yapabileceğinizi anlatacağım.

//Robomongo 9.0'da collation desteği bulunmuyor, örnekleri terminal üzerinden çalıştırabilirsiniz.
collation'a göre sort etme
//Collect koleksiyonumuz sadece name alanından oluşmakta.

{
"name" : "ahm"
}

{
"name" : "basd"
}

{
"name" : "car"
}


{
"name" : "çari"
}

{
"name" : "der"
}

db.getCollection('Collect').find({}).sort({"name":1}).collation({locale:"tr"})


collation ile index oluşturma

db.getCollection('Collect').createIndex(  { name: 1 },{"name":"index_name", collation: { locale: "tr",strength:2}})


C# driver ile sort etme

MongoClient mc = new MongoClient();
var col = mc.GetDatabase("testDB").GetCollection<BsonDocument>("Collect");
FindOptions fop = new FindOptions();
fop.Collation = new Collation(locale: "tr");
var sort = Builders<BsonDocument>.Sort.Ascending("name");
var result = col.Find(new BsonDocument { },fop).Sort(sort).ToList();

Yorumlar

Bu kod parçacığına henüz yorum yapılmamış.

Yorum Yaz

Yorum yazabilmek için üye olunuz veya giriş yapınız