1
dbsample:MongoDB中得到平均每個arrayelement
var doc1= new BsonDocument
{
{ "line", "a" },
{ "size", new BsonArray { 2 } }
};
var doc2= new BsonDocument
{
{ "line", "xx" },
{ "size", new BsonArray { 5, 3, 8} }
};
var doc3= new BsonDocument
{
{ "line", "xx" },
{ "size", new BsonArray { 1, 10, 8} }
};
我想按行BsonDocument,得到各行的數量和每BsonArrayElement的魅力。分組和計數作品,但我怎樣才能得到每個BsonArrayElement的平均值? BsonArray的長度在不同的行之間有所不同。我想
var filterBuilder = Builders<BsonDocument>.Filter;
var aggregate = collection.Aggregate().Group(new BsonDocument { { "_id", "$line" }, { "count", new BsonDocument("$sum", 1) } });
foreach (var document in aggregate.ToEnumerable())
{
Console.WriteLine(document);
}
輸出:
{ "_id" : "xx", "count" : 2, "avg" : [3, 6.5, 8] }
{ "_id" : "a", "count" : 1, "avg" : [2]}
謝謝。代碼在shell中工作,但在C#中我得到一個錯誤「'BsonDocument'不包含'doc'的定義,並且沒有擴展方法'doc'接受類型'BsonDocument'的第一個參數可以被發現(你是否缺少一個使用指令或程序集引用?)「 – seeberg
正如我在答案中提到的,我沒有測試過這個。當我有機會的時候,我會但是你可能需要調試管道,特別是在這個可能需要重構的'.Unwind(x => x.doc)'步驟。 – chridam
我無法得到它的工作:( – seeberg