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

发布于 2024-12-21 04:53:45 字数 453 浏览 5 评论 0原文

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

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

非常感谢。

I want to sort a MongoDB collection based upon several fields, some ascending, other descending.
I'm using the official C# driver. My code currently looks like this:

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))
{
...

How do I alter this code so it sorts on descending for email?

Thanks very much.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

递刀给你 2024-12-28 04:53:45

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

You can chain SortBy calls:

var sort = SortBy.Ascending("surname").Descending("email");
foreach (var doc in contactsCollection.FindAs<MongoDB.Bson.BsonDocument>(query).SetSortOrder(sort))
{
  ...

I'd be careful about building queries dynamically, especially with that many keys. Keep in mind that MongoDB uses only ONE index for a query, so your index will have to be a good fit.

Example: find({A: "foo", B: "bar"}).sort("C" : -1);

This won't use indexing efficiently if the compound index is {C, A, B}. It must be {A, B, C} instead. Too many indexes will take up space and make inserts / updates slower.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文