MongoDB排序顺序 - 上升和下降字段的组合

MongoDB排序顺序 - 上升和下降字段的组合

问题描述:

我想根据几个字段对一个MongoDB集合进行排序,一些升序,另一些降序。 我正在使用官方的C#驱动程序。我的代码目前看起来是这样的:MongoDB排序顺序 - 上升和下降字段的组合

string[] sortFields = new[] { "surname", "firstname","companyname","email" }; 
MongoDB.Driver.Builders.SortByBuilder sort = MongoDB.Driver.Builders.SortBy.Ascending(sortFields); 
foreach (MongoDB.Bson.BsonDocument doc in contactsCollection.FindAs<MongoDB.Bson.BsonDocument>(query).SetSortOrder(sort)) 
{ 
... 

如何改变这种代码,以便它排序上降的电子邮件?

非常感谢。

你可以连续通话SortBy

var sort = SortBy.Ascending("surname").Descending("email"); 
foreach (var doc in contactsCollection.FindAs<MongoDB.Bson.BsonDocument>(query).SetSortOrder(sort)) 
{ 
    ... 

我会小心动态建立查询,特别是许多键。请记住,MongoDB只使用一个索引进行查询,因此您的索引必须非常适合。

实施例:find({A: "foo", B: "bar"}).sort("C" : -1);

这将不能有效地,如果化合物指数{C, A, B}使用索引。相反,它必须是{A, B, C}。索引太多会占用空间并使插入/更新速度变慢。