2011-06-22 6 views
5

J'utilise le pilote C# officiel et je veux trier une collection par $natural.

Je sais que pour le tri par les clés, je peux utiliser

collection.Find(query).SetSortOrder(SortBy.Descending("Name")) 

Comment trier avec $natural?

+0

Note importante: Il n'y a pas besoin de trier par ordre croissant $ ordre naturel. C'est l'ordre MongoDB 'naturellement' renvoie les résultats. – i3arnon

Répondre

8

Oui, vous pouvez utiliser le tri décroissant. Par exemple:

collection.Insert(new BsonDocument("x", 1)); 
collection.Insert(new BsonDocument("x", 2)); 
collection.Insert(new BsonDocument("x", 3)); 

foreach (var document in collection.FindAll() 
    .SetSortOrder(SortBy.Descending("$natural"))) 
{ 
    Console.WriteLine(document.ToJson()); 
} 
+0

merci beaucoup – signals4change

0

Mis à jour la réponse de Robert Stam à quelque chose à peu près équivalent, en utilisant la syntaxe du pilote 2.0 ...

await collection.InsertOneAsync(new BsonDocument("x", 1)); 
await collection.InsertOneAsync(new BsonDocument("x", 2)); 
await collection.InsertOneAsync(new BsonDocument("x", 3)); 

foreach (
    var document in 
     await 
      collection.Find(_ => true) 
       .Sort(new SortDefinitionBuilder<BsonDocument>().Descending("$natural")) 
       .ToListAsync()) 
{ 
    Console.WriteLine(document.ToJson()); 
} 
Questions connexes