Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用dotnet驱动程序执行mongo聚合查询_C#_.net_Mongodb_Aggregation Framework_Mongodb .net Driver - Fatal编程技术网

C# 使用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}

我需要在dotnet应用程序上执行此查询mongo。 查询返回许多文档

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" }