我對Mongo世界非常陌生。我想在c#中使用管道方法執行聚合函數。 使用的MongoDB版本:3.2。 C#驅動程序版本:2.2.4兩個mongoC#和MongoDB驅動在IMongoCollection中使用Aggregate <>函數以及它與MongoCollection中的.Aggregate()的不同形式
C#下面的代碼
MongoClient client = new MongoClient("mongodb://localhost:27017");
IMongoDatabase database = client.GetDatabase("Interaction");
IMongoCollection<CollectionStructure.Interactions> collection = database.GetCollection <CollectionStructure.Interactions>("Interactions");
//IMongoCollection<CollectionStructure.Interactions> result;
var unwind = new BsonDocument
{
{
"$unwind",
new BsonDocument
{
{"path", "$Pages" }
}
}
};
var group1 = new BsonDocument
{
{
"$group",
new BsonDocument
{
{
"_id", new BsonDocument
{
{"UrlPath", "$Pages.Url.Path"},
{"InteractionId", "$_id"}
}
},
{
"count", new BsonDocument
{
{"$sum", 1}
}
}
}
}
};
var group2 = new BsonDocument
{
{
"$group",
new BsonDocument
{
{
"_id", new BsonDocument
{
{"UrlPath", "$_id.UrlPath"}
}
},
{
"distinctCount", new BsonDocument
{
{"$sum", 1}
}
}
}
}
};
var sort = new BsonDocument
{
{
"$sort",
new BsonDocument
{
{"distinctCount", "-1" }
}
}
};
AggregateArgs pipeline = new AggregateArgs(); //= new[] {unwind,group1,group2,sort};
pipeline.Pipeline = new[] { unwind, group1, group2, sort };
##error##
var result = collection.Aggregate<>(pipeline);
互動類簡單的getter和setter類,代碼如下:
public static class CollectionStructure
{
[BsonIgnoreExtraElements]
public class Interactions
{
public string id { get; set; }
public string contactId{ get; set; }
public string channelId { get; set; }
public string language { get; set; }
public string siteName { get; set; }
public int value { get; set; }
public int visitPageCount { get; set; }
public List<Pages> Pages{get; set;}
}
public class Pages
{
public string url {get; set;}
public int visitPageIndex {get; set;}
}
}
所以2個快速問題:
如何正確使用Aggre上述場景下的門功能。請指導我,如果我做錯了什麼。
什麼是這兩個單獨的集合MongoCollection和IMongoCollections以及何時使用什麼。
請在這幫我。在此先感謝
是否有人可以幫助這個福利局:( – user5510044
瀏覽相關鏈接,我認爲.Aggregate後()功能很可能在最新的Mongo版本中被棄用,我正在使用3.2。也有很多幫助不在線提供 – user5510044
添加你的c#類,提供驅動版本 – profesor79