MongoDB排序顺序 - 上升和下降字段的组合
问题描述:
我想根据几个字段对一个MongoDB集合进行排序,一些升序,另一些降序。 我正在使用官方的C#驱动程序。我的代码目前看起来是这样的:MongoDB排序顺序 - 上升和下降字段的组合
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))
{
...
如何改变这种代码,以便它排序上降的电子邮件?
非常感谢。
答
你可以连续通话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}
。索引太多会占用空间并使插入/更新速度变慢。