Mongodb: birden fazla alana göre nasıl sıralama yapılır
MongoDB’deki belgeleri birden çok alana göre sıralamak için aşağıdaki sözdizimini kullanabilirsiniz:
db.myCollection.find().sort( { " field1 ": 1, " field2 ": -1 } )
Bu özel kod, myCollection adlı koleksiyondaki belgeleri önce alan 1’e göre artan, ardından alan 2’ye göre azalan şekilde sıralar.
Aşağıdaki örnekler, bu sözdiziminin aşağıdaki belgelere sahip bir koleksiyon ekibiyle nasıl kullanılacağını gösterir:
db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8}) db.teams.insertOne({team: " Spurs ", points: 30, rebounds: 12}) db.teams.insertOne({team: " Rockets ", points: 20, rebounds: 7}) db.teams.insertOne({team: " Warriors ", points: 25, rebounds: 5}) db.teams.insertOne({team: " Cavs ", points: 25, rebounds: 9})
Örnek 1: MongoDB’de birden fazla alana göre sıralama (artan)
Teams koleksiyonundaki belgeleri önce “puanları”, ardından “geri dönme sayısını” artırarak sıralamak için aşağıdaki kodu kullanabiliriz:
db.teams.find().sort( { " points ": 1, " rebounds ": 1 } )
Bu sorgu aşağıdaki sonuçları döndürür:
{ _id: ObjectId("61f952c167f1c64a1afb203b"), team: 'Rockets', points: 20, rebounds: 7 } { _id: ObjectId("61f952c167f1c64a1afb203c"), team: 'Warriors', points: 25, rebounds: 5 } { _id: ObjectId("61f952c167f1c64a1afb203d"), team: 'Cavs', points: 25, rebounds: 9 } { _id: ObjectId("61f952c167f1c64a1afb2039"), team: 'Mavs', points: 30, rebounds: 8 } { _id: ObjectId("61f952c167f1c64a1afb203a"), team: 'Spurs', points: 30, rebounds: 12 }
Belgelerin “puan” alanı artırılarak (küçükten büyüğe), ardından “geri tepme” alanı artırılarak (küçükten büyüğe) sıralandığına dikkat edin.
Örnek 2: MongoDB’de birden fazla alana göre sıralama (azalan)
Ekip koleksiyonundaki belgeleri önce “puanları”, ardından “geri dönenleri” azaltarak sıralamak için aşağıdaki kodu kullanabiliriz:
db.teams.find().sort( { " points ": -1, " rebounds ": -1 } )
Bu sorgu aşağıdaki sonuçları döndürür:
{ _id: ObjectId("61f952c167f1c64a1afb203a"), team: 'Spurs', points: 30, rebounds: 12 } { _id: ObjectId("61f952c167f1c64a1afb2039"), team: 'Mavs', points: 30, rebounds: 8 } { _id: ObjectId("61f952c167f1c64a1afb203d"), team: 'Cavs', points: 25, rebounds: 9 } { _id: ObjectId("61f952c167f1c64a1afb203c"), team: 'Warriors', points: 25, rebounds: 5 } { _id: ObjectId("61f952c167f1c64a1afb203b"), team: 'Rockets', points: 20, rebounds: 7 }
Belgelerin “puan” alanı azalarak (en büyükten en küçüğe), ardından “geri dönüş” alanı azalarak (en büyükten en küçüğe) sıralandığını unutmayın.
Not : Sıralama 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: Tarihe göre nasıl sıralanır
MongoDB: Nasıl gruplandırılır ve sayılır?
MongoDB: Birden fazla alana göre nasıl gruplandırılır