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

时间:2011-12-13 10:59:18

标签: mongodb sorting 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))
{
...

如何更改此代码,以便按电子邮件降序排序?

非常感谢。

1 个答案:

答案 0 :(得分:6)

您可以链接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}。索引太多会占用空间并使插入/更新变慢。