MongoDB排序BsonArray

时间:2011-10-19 21:09:58

标签: mongodb

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

这样的事情:

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

我正在使用它来对嵌套文档进行排序,因此我无法使用集合排序方法。 我正在使用官方的C#驱动程序。

1 个答案:

答案 0 :(得分:1)

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());
}