2010-01-23 11 views

Respuesta

60

Usted también puede hacerlo utilizando el método SetSortOrder en la clase MongoCursor:

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

Esta es una respuesta mucho más "C#" que la respuesta de aceptación.(Aquí está la documentación relevante: http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-Modifyingacursorbeforeenumeratingit). – cdmckay

-1

Estoy haciendo esto en JavaScript ya que no sé C#, pero debe tener una sintaxis equivalente con el controlador C#.

Si la consulta se parecía a:

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

y que desea ordenar por "Baz" ascendente, envuelva su consulta en un campo de "consulta" y añadir un campo "orderby":

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

Para ordenar de forma descendente, use -1.

4

Parece que la manera de hacer esto utilizando el C# controlador existente es el siguiente:

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

Lo cual estaba encendida a por Sam Corder here

+6

Véase la respuesta de @ Chris Brook de un enfoque más -ish C#. – cdmckay

+0

Personalmente un admirador del enfoque de mongodb-ish –

+0

Cambió la respuesta aceptada al estilo más nuevo que no estaba disponible en el momento en que se realizó la pregunta. – jmcd

7

Tenga en cuenta que para ordenar en múltiples campos utilizar este:

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

Si desea utilizar LINQ:

De la documentación: (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 
} 

Si lo desea, también puede limitar los resultados:

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

Sólo recuerde tener un índice en el campo que está ordenando por:]

1

Para los métodos asincrónicos:

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

Uso simple de API en 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(); 
Cuestiones relacionadas