MongoDB排序顺序 - 升序和降序字段的混合

Jou*_*man 3 sorting mongodb mongodb-.net-driver

我想基于几个字段对一个MongoDB集合进行排序,一些是升序,另一些是降序.我正在使用官方的C#驱动程序.我的代码目前看起来像这样:

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))
{
...
Run Code Online (Sandbox Code Playgroud)

如何更改此代码以便对电子邮件进行降序排序?

非常感谢.

mne*_*syn 6

你可以链接SortBy电话:

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

我要小心动态构建查询,尤其是使用那么多密钥.请记住,MongoDB只为查询使用一个索引,因此您的索引必须非常合适.

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

如果复合索引是,则不会有效地使用索引{C, A, B}.它必须是{A, B, C}.索引太多会占用空间并使插入/更新速度变慢.