C# 使用dotnet驱动程序执行mongo聚合查询
我需要在dotnet应用程序上执行此查询mongo。 查询返回许多文档C# 使用dotnet驱动程序执行mongo聚合查询,c#,.net,mongodb,aggregation-framework,mongodb-.net-driver,C#,.net,Mongodb,Aggregation Framework,Mongodb .net Driver,我需要在dotnet应用程序上执行此查询mongo。 查询返回许多文档 db.mycollection.aggregate( [ { $match : { tipo:"user_info" } } , {$group: { _id: {userKey: "$userKey", appId:"$appId"} , uniqueIds: {$addToSet: "$_id"}, count: {$sum: 1}
db.mycollection.aggregate(
[
{ $match : { tipo:"user_info" } } ,
{$group: {
_id: {userKey: "$userKey", appId:"$appId"} ,
uniqueIds: {$addToSet: "$_id"},
count: {$sum: 1}
}
},
{$match: {
count: {"$gt": 1}
}
}
]);
我尝试了这个,但它返回0个文档
var result = collection.Aggregate()
.AppendStage<BsonDocument>
(
new BsonDocument { { "$match", new BsonDocument("tipo", "user_info") } }
)
.AppendStage<BsonDocument>
(
new BsonDocument { { "$group", new BsonDocument("_id", "{userKey: \"$userKey\", appId:\"$appId\"}")
.Add("uniqueIds", new BsonDocument("$addToSet", "$_id"))
.Add("count", new BsonDocument("$sum", "1"))} }
)
.AppendStage<BsonDocument>
(
new BsonDocument { { "$match", new BsonDocument("count", new BsonDocument("$gt", 1)) } }
).ToList();
var result=collection.Aggregate()
.附属物阶段
(
新BsonDocument{{“$match”,新BsonDocument(“tipo”,“用户信息”)}
)
.附属物阶段
(
新BsonDocument{{“$group”,新BsonDocument(“\u id”,“{userKey:\“$userKey\”,appId:\“$appId\”}”)
.Add(“uniqueid”,新的BsonDocument($addToSet),“$\u id”))
.Add(“count”,新的BsonDocument(“$sum”,“1”))}
)
.附属物阶段
(
新BsonDocument{{“$match”,新BsonDocument(“count”,新BsonDocument($gt),1))}
).ToList();
这里的问题是您为$group
阶段错误地定义了\u id
。MongoDB驱动程序将其解释为字符串:
{ "$group" : { "_id" : "{userKey: \"$userKey\", appId:\"$appId\"}", "uniqueIds" : { "$addToSet" : "$_id" }
要修复此问题,您可以嵌套另一个BsonDocument
,如下所示:
.AppendStage<BsonDocument>
(
new BsonDocument { { "$group", new BsonDocument("_id",
new BsonDocument() { { "userKey", "$userKey" }, { "appId", "$appId" } })
.Add("uniqueIds", new BsonDocument("$addToSet", "$_id"))
.Add("count", new BsonDocument("$sum", 1))} }
)
只需将字符串更改为int
{ "$group" : { "_id" : { "userKey" : "$userKey", "appId" : "$appId" }, "uniqueIds" : { "$addToSet" : "$_id" }