MongoDB驱动程序C#试图做基本的数学运算,但不理解聚合
本文关键字:运算 不理解 驱动程序 MongoDB | 更新日期: 2023-09-27 18:30:40
我有一个BsonDocuments的集合,每个文档都有一个名为"engagement"的字段(这是一个数字)和一个名为"color"的字段。我想要所有"颜色"="蓝色"的BsonDocuments的总成本。
到目前为止,我发现我需要做这样的事情:
var collection = db.GetCollection<BsonDocument>("collectionName");
var match = new BsonDocument
{
{
"$match",
new BsonDocument
{
{"sentiment", "positive"}
}
}
};
var group = new BsonDocument
{
{ "$group",
new BsonDocument
{
{
"Sum", new BsonDocument
{
{
"$sum", "$engagement"
}
}
}
}
}
};
var pipeline = new[] { match, group };
var result = collection.Aggregate(pipeline);
我一直收到有关无法从用法推断出聚合方法的类型方法参数的错误。
简而言之,我想知道如何使用聚合框架执行简单的数学运算。在此示例中,我尝试对集合中所有 BsonDocuments 的参与字段的所有值求和。如果可能的话,生成器函数的利用率会很好,但手动创建的 BsonDocument 也可以使用。
感谢您抽出宝贵时间
使用 $group 时,您需要告诉聚合框架要按哪些字段进行分组。您可以在组对象的_id
字段中执行此操作。此外,如果您想要一个简单的文档计数,则需要使用 { $sum : 1 }
对每个文档进行计数。如果使用字段名称,则告诉聚合将该字段的值解释为数字并将它们相加。
在MongoDB shell语法中:
{ $group: {
_id: "$engagement",
Sum: { $sum: 1 }
}}
翻译成 C#(未经测试!
{ "$group", new BsonDocument
{
{ "_id", "$engagement" },
{ "Sum", new BsonDocument
{
{
"$sum", 1
}
}
}
}
}