【问题标题】:MongoDB sort order - mix of ascending and descending fieldsMongoDB 排序顺序 - 升序和降序字段的混合
【发布时间】:2013-12-31 03:57:10
【问题描述】:

我想根据几个字段对 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))
{
...

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

非常感谢。

【问题讨论】:

    标签: mongodb sorting mongodb-.net-driver


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-09-02
      • 2019-01-31
      • 2014-06-22
      • 2015-10-09
      • 2018-11-20
      • 2018-06-03
      • 2018-08-26
      • 1970-01-01
      • 2021-11-01
      相关资源
      最近更新 更多