2011-10-19 48 views
0

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

事情是这样的:

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

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

回答

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