当前位置:  开发笔记 > 编程语言 > 正文

如何使用MongoDB的C#驱动程序指定订单或排序?

如何解决《如何使用MongoDB的C#驱动程序指定订单或排序?》经验,为你挑选了7个好方法。

我试图弄清楚如何通过告诉C#驱动程序排序顺序来排序服务器端的文档集合,但它似乎还不支持该结构.

是否有可能以其他方式做到这一点?



1> Chris Brook..:

您也可以使用MongoCursor类上的SetSortOrder方法执行此操作:

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


这是一个比接受答案更"C#"的答案.(以下是相关文档:http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-Modifyingacursorbeforeenumeratingit).

2> Sergej Popov..:

我想补充克里斯的回答,在C#驱动程序2.x的现在与做SortBy,SortByDescending,ThenBy&ThenByDescending

collection.Find(bson => true).SortBy(bson => bson["SortByMeAscending"]).ThenByDescending(bson => bson["ThenByMeDescending"]).ToListAsync()

现在它更像是Linq.

http://mongodb.github.io/mongo-csharp-driver/2.0/reference/driver/crud/reading/#sort



3> DmitryZyr..:

对于异步方法:

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



4> Darius..:

请注意,要对多个字段进行排序,请使用:

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



5> Shy Peleg..:

如果你想使用linq:

来自文档:(http://docs.mongodb.org/ecosystem/tutorial/use-linq-queries-with-csharp-driver/)

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

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

如果您愿意,您也可以限制结果:

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

只记得在你要排序的字段上有一个索引:]



6> Mohammad Akb..:

MongoDB.Driver 2.5.0中api的简单用法

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

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

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



7> jmcd..:

看来使用现有的C#驱动程序执行此操作的方法如下:

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

我在这里被Sam Corder转向了


请参阅@Chris Brook的答案,了解更多C#-ish方法.
推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有