2010-01-23 11 views

Odpowiedz

60

Można również zrobić to za pomocą metody SetSortOrder od klasy MongoCursor:

db["collection"].Find().SetSortOrder(SortBy.Ascending("SortByMe")); 
+6

Jest to o wiele więcej odpowiedzi "C#" niż akceptowana.(Oto odpowiednia dokumentacja: http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial #CSharpDriverTutorial-Modyfikowaniekursorówkresuodliczania). – cdmckay

-1

Robię to w JavaScript, ponieważ nie wiem, C#, ale powinien mieć równoważną składnię ze sterownikiem C#.

Jeśli zapytanie wyglądało:

db.c.find({"foo" : "bar"}) 

i chcesz, aby posortować według „baz” rosnącym, owinąć zapytanie w „zapytania” pola i dodać „orderby” murawę:

db.c.find({"query" : {"foo" : "bar"}, "orderby" : {"baz" : 1}}) 

Aby sortować malejąco, użyj -1.

4

Wydaje się, że sposób to zrobić przy użyciu istniejących C# kierowca jest w następujący sposób:

db["collection"].Find(new Document().Append("query", 
new Document()).Append("orderby", 
new Document().Append(name:1).Append(age,-1))); 

którego byłem włączone do Sam Corder here

+6

odpowiedź Zobacz @Chris Brooka bardziej C# -ish podejścia. – cdmckay

+0

Osobiście fanem mongodb-ish approach –

+0

Zmieniono zaakceptowaną odpowiedź na nowszy styl, który nie był dostępny w momencie zadawania pytania. – jmcd

7

pamiętać, że aby posortować na wielu polach użyj:

db["collection"].Find().SetSortOrder(SortBy.Ascending("SortByMe").Descending("An‌​dByMe"); 
5

Jeśli chcesz używać LINQ:

Z dokumentacji: (http://docs.mongodb.org/ecosystem/tutorial/use-linq-queries-with-csharp-driver/)

var query= 
    (from c in collection.AsQueryable<C>() 
    orderby c.X 
    select c) 

foreach (var d in query) 
{ 
    // process your documents 
} 

Jeśli chcesz, możesz również ograniczyć wyniki:

var query= 
    (from c in collection.AsQueryable<C>() 
    orderby c.X descending 
    select c).Take(1); 

Wystarczy pamiętać mieć indeks na polu, które sortujesz:]

1

Dla metod asynchronicznych:

var filter = Builders<BsonDocument>.Filter.Empty; 
var sort = Builders<BsonDocument>.Sort.Ascending("time"); 
collection.FindAsync(filter, new FindOptions<BsonDocument, BsonDocument>() 
{ 
    Sort = sort 
}); 
1

Proste korzystanie z API w MongoDB.Driver 2.5.0

var client = new MongoClient("mongodb://localhost:27017"); 

var database = client.GetDatabase("Blog"); 

var list = database.GetCollection<BlogPost>("BlogPost") 
    .Find(e => e.Deleted == false) 
    .SortByDescending(e => e.CreatedOn) 
    .Limit(20) 
    .ToList(); 
Powiązane problemy