net mongoclient example create consultas collection c# mongodb sorting

mongoclient - ¿Cómo especificar un pedido u ordenar utilizando el controlador C#para MongoDB?



mongodb driver c# sample (8)

Estoy intentando averiguar cómo ordenar una colección de documentos del lado del servidor diciéndole al controlador C # cuál es el orden de clasificación, pero parece que todavía no es compatible con esa construcción.

¿Es posible hacer esto de otra manera?


Hago esto en JavaScript porque no sé C #, pero debe tener una sintaxis equivalente con el controlador C #.

Si su consulta se veía así:

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

y desea ordenar por "baz" de forma ascendente, ajustar su consulta en un campo de "consulta" y agregar un campo "ordenar por":

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

Para la ordenación descendente, use -1.


Para métodos asíncronos:

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


Parece que la forma de hacerlo utilizando el controlador C # existente es la siguiente:

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

A lo cual Sam Corder recurrió here


Si quieres usar 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);

Solo recuerde tener un índice en el campo que está ordenando por:]



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

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


Tenga en cuenta que para ordenar en múltiples campos use esto:

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


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();