MongoDB 排序 BsonArray

发布于 2024-12-11 07:05:37 字数 303 浏览 0 评论 0原文

在 C# 中,如果我有一个 BsonDocuments 的 BsonArray,并且我想根据每个 BsonDocument 中的元素对 BsonArray 元素进行排序,我该怎么做?

像这样的事情:

BsonArray originalTags = doc["tags"].AsBsonArray;
BsonArray newTags = originalTags.OrderBy(what goes here?);

我用它来对嵌套文档进行排序,所以我不能使用集合排序方法。 我正在使用官方 C# 驱动程序。

In C#, if I have a BsonArray of BsonDocuments and I want to sort the BsonArray elements based upon an element within each BsonDocument, how do I do it?

Something like this:

BsonArray originalTags = doc["tags"].AsBsonArray;
BsonArray newTags = originalTags.OrderBy(what goes here?);

I'm using this to sort nested documents, so I can't use the collection sort methods.
I'm using the official C# driver.

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

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

发布评论

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

评论(1

╰ゝ天使的微笑 2024-12-18 07:05:37

OrderBy 是 LINQ(不是 C# 驱动程序)的扩展方法,它有两个重载。在一个中,您提供一个 lambda 来提取要排序的键,在另一个中,您还提供一个比较两个键的 lambda。

下面是一个基于名为“x”的嵌入元素的值对 BsonArray 进行排序的示例:

var originalTags = new BsonArray {
    new BsonDocument { { "_id", 1 }, { "x", 2 } },
    new BsonDocument { { "_id", 2 }, { "x", 1 } }
};
var newTags = originalTags.OrderBy(t => t.AsBsonDocument["x"]);

foreach (var tag in newTags) {
    Console.WriteLine(tag.ToJson());
}

OrderBy is an extension method from LINQ (not the C# driver), and it has two overloads. In one you provide a lambda to extract the key you want to sort on, and in the other you additionally provide a lambda that compares two keys.

Here's an example that sorts a BsonArray based on the value of an embedded element called "x":

var originalTags = new BsonArray {
    new BsonDocument { { "_id", 1 }, { "x", 2 } },
    new BsonDocument { { "_id", 2 }, { "x", 1 } }
};
var newTags = originalTags.OrderBy(t => t.AsBsonDocument["x"]);

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