gpt4 book ai didi

c# - MongoDB C# 聚合计数

转载 作者:行者123 更新时间:2023-12-05 08:32:04 25 4
gpt4 key购买 nike

我希望使用 C# 驱动程序 (V 2.7.0) 对集合进行聚合,然后计算结果。

假设我有一个 IMongoCollection col,我会像这样进行聚合:

IAsyncCursor<BsonDocument> cursor = col.Aggregate()
.Match(someFilterDefinition)
.Project(someProjectionDefinition)
.Unwind("someFieldName")
.ToCursor();
while (cursor.MoveNext())
{
foreach (BsonDocument doc in cursor.Current)
{
doStuff(doc);
}
}

我希望获得聚合返回的文档数。在 shell 中你会做这样的事情

db.getCollection("someCollectionName").aggregate(
[
{
"$match" : {
// some match filter
}
},
{
"$project" : {
"someField" : 1
}
},
{
"$unwind" : "$someField"
},
{
"$count" : "count"
}
],
{
"allowDiskUse" : false
}
);

你会得到一个带有单个“计数”字段的文档(或没有文档),它具有一个 int64 值,代表它之前阶段的元素数量。

有一个IAggregateFluent.Count()功能。但是它返回一个 IAggregateFluent我想要一个 AggregateCountResult 或一个简单的 unsigned long。

如何使用 Aggregate.Count() 函数?

最佳答案

您必须使用 .ToCursor 或 .FirstOrDefault 或类似的方法完成聚合,而不是仅仅附加 Count(),这会为您提供一个聚合阶段。FirstOrDefault 返回具有 Count 属性的 AggregateCountResult。

ulong count = col.Aggregate()
.Match(someFilterDefinition)
.Project(someProjectionDefinition)
.Unwind("someFieldName")
.Count()
.FirstOrDefault() // returns AggregateCountResult
.Count(); // returns ulong

关于c# - MongoDB C# 聚合计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53852442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com