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:]
Solo para agregar a la respuesta de Chris, en C # Driver 2.x ahora se hace con SortBy
, SortByDescending
, ThenBy
y ThenByDescending
collection.Find(bson => true).SortBy(bson => bson["SortByMeAscending"]).ThenByDescending(bson => bson["ThenByMeDescending"]).ToListAsync()
Ahora se parece mucho a Linq.
http://mongodb.github.io/mongo-csharp-driver/2.0/reference/driver/crud/reading/#sort
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("AndByMe");
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();