我想基于几个字段对一个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))
{
...
如何更改此代码,以便按电子邮件降序排序?
非常感谢。
答案 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}
。索引太多会占用空间并使插入/更新变慢。