2010-01-23 11 views

risposta

60

si può anche fare utilizzando il metodo SetSortOrder sulla classe MongoCursor:

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

Questa è una risposta molto più "C#" della risposta di accettazione.(Ecco la documentazione pertinente: http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-Modifyingacursorbeforeenumeratingit). – cdmckay

-1

Sto facendo questo in JavaScript poiché non conosco C#, ma dovrebbe avere una sintassi equivalente con il driver C#.

Se la query sembrava:

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

e si desidera ordinare secondo "baz" ascendente, avvolgere la query in un campo "query" e aggiungere un campo "orderby":

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

Per l'ordinamento decrescente, utilizzare -1.

4

Sembra che il modo per farlo utilizza il driver esistente C# è la seguente:

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

che mi è stato acceso per Sam Corder here

+6

risposta di See @ Chris Brook per un approccio più -ish C#. – cdmckay

+0

Personalmente un fan dell'approccio mongodb-ish –

+0

Modificata la risposta accettata allo stile più recente che non era disponibile al momento della domanda. – jmcd

7

Si noti che per ordinare su più campi utilizzare questo:

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

Se si desidera utilizzare LINQ:

Dalla documentazione: (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 
} 

Se si vuole si può anche limitare i risultati:

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

Basta ricordare per avere un indice sul campo che stai ordinando:]

1

Per i metodi asincroni:

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

utilizzo semplice delle api in 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(); 
Problemi correlati