簡體   English   中英

C#Mongo驅動程序錯誤:無法從BsonType'Document'反序列化'Int32'

[英]C# Mongo Driver error: Cannot deserialize a 'Int32' from BsonType 'Document'

以下MongoDB查詢在Robo3T 1.2上運行良好,並返回正確的“計數”。

db.runCommand( {
aggregate: "User",
pipeline: [
{$unwind: '$UserSubscriptions'},
{$group: {
    _id: '$_id',
    codes: {$addToSet: '$UserSubscriptions.Subscription.Publication'}
}},
{$unwind: '$codes'},
{$group: {
    _id: '$codes',
    count: {$sum: 1}
}}
]
} )

我正在嘗試將上述查詢轉換為C#MongoDriver查詢

 var unwind = new BsonDocument { { "$unwind", "$UserSubscriptions" } };
        var group1 = new BsonDocument
            {
                { "$group",
                    new BsonDocument
                        {
                            { "_id", new BsonDocument
                                         {
                                             {
                                                 "Id","$_id"
                                             }
                                         }
                            },
                            {
                                "codes", new BsonDocument
                                             {
                                                 {
                                                     "$addToSet","$UserSubscriptions.Subscription.Publication.Code"
                                                 }
                                             }
                            }
                        }
              }
            };
        var unwindCode = new BsonDocument { { "$unwind", "$codes" } };
        var group2 = new BsonDocument
            {
                { "$group",
                    new BsonDocument
                        {
                            { "_id", new BsonDocument
                                         {
                                             {
                                                 "Id","$codes"
                                             }
                                         }
                            },
                            {
                                "codes", new BsonDocument
                                             {
                                                 {
                                                     "$sum",1
                                                 }
                                             }
                            }
                        }
              }
            };
        var pipeline = new[] { unwind, group1 , unwindCode , group2 };
    var result = coll.Aggregate<T>(pipeline);

但是出現錯誤無法從BsonType'Document'反序列化'Int32'。

ID是集合中的主鍵

public int ID {get; 組; }

在此處輸入圖片說明

請告知如何實現此目標。

(機器人3T 1.2.1)(MongoDB.Driver 2.4.4)

您正在嘗試通過為“ _id”創建BsonDocument將BsonDocument反序列化為“ Int32”。 您只需要這樣做:

var group1 = new BsonDocument
{
    { 
        "$group", new BsonDocument
        {
            { 
                "_id", "$_id"
            },
            {
                "codes", new BsonDocument
                {
                     {
                        "$addToSet", "$UserSubscriptions.Subscription.Publication.Code"
                     }
                }
            }
        }
    }
};

var group2 = new BsonDocument
{
    { 
        "$group", new BsonDocument
        {
            { 
                "_id", "$codes"
            },
            {
                "count", new BsonDocument
                {
                     {
                        "$sum", 1
                     }
                }
            }
        }
    }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM