2011-10-19 19 views
0

C#では、私がBsonDocumentsのBsonArrayを持っていて、各BsonDocument内の要素に基づいてBsonArray要素をソートしたいのですが、どうすればいいですか?このようなMongoDB sort BsonArray

何か:

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

私はネストされた文書をソートするために、これを使用していますので、私は、コレクションのソート方法を使用することはできません。 公式のC#ドライバを使用しています。

答えて

1

OrderByはLINQ(C#ドライバではない)の拡張メソッドであり、2つのオーバーロードがあります。 1つはソートするキーを抽出するラムダを提供し、もう1つは2つのキーを比較するラムダを追加します。ここで

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