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

MongoDB排序顺序-升序和降序字段的混合,mongodb,sorting,mongodb-.net-driver,Mongodb,Sorting,Mongodb .net Driver,我想根据几个字段对MongoDB集合进行排序,一些是升序,另一些是降序。 我用的是官方的C#driver。我的代码当前如下所示: string[] sortFields = new[] { "surname", "firstname","companyname","email" }; MongoDB.Driver.Builders.SortByBuilder sort = MongoDB.Driver.Builders.SortBy.Ascending(sortFields); foreach

我想根据几个字段对MongoDB集合进行排序,一些是升序,另一些是降序。 我用的是官方的C#driver。我的代码当前如下所示:

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))
{
...
string[]sortFields=new[]{“姓氏”、“名”、“公司名”、“电子邮件”};
MongoDB.Driver.Builders.SortByBuilder sort=MongoDB.Driver.Builders.SortBy.Ascending(sortFields);
foreach(contactsCollection.FindAs(查询).SetSortOrder(排序)中的MongoDB.Bson.BsonDocument文档)
{
...
如何更改此代码,使其按降序排序以发送电子邮件


非常感谢。

您可以通过呼叫链接

var sort = SortBy.Ascending("surname").Descending("email");
foreach (var doc in contactsCollection.FindAs<MongoDB.Bson.BsonDocument>(query).SetSortOrder(sort))
{
  ...
var sort=SortBy.升序(“姓氏”).降序(“电子邮件”);
foreach(contactsCollection.FindAs(查询).SetSortOrder(排序)中的var文档)
{
...
在动态构建查询时,我会非常小心,尤其是使用这么多的键。请记住,MongoDB对查询只使用一个索引,因此您的索引必须非常适合

示例:
find({A:foo),B:bar})。排序(“C”:-1);

如果复合索引是
{C,A,B}
,这将无法有效地使用索引。它必须是
{A,B,C}
。索引过多将占用空间并使插入/更新速度变慢