我对Mongo世界很陌生。我试图使用管道方法在c#中执行聚合函数。 使用的MongoDB版本: 3.2 。 C#驱动程序版本:mongoC#和mongoDB驱动程序的2.2.4
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个简单的问题:
如何在上面的场景中使用聚合函数。如果我做错了,请指导我。
这两个单独的集合MongoCollection和IMongoCollections是什么以及什么时候使用什么。
请帮帮我。提前致谢
答案 0 :(得分:0)
<>
吗?我找不到任何指导它的文件。
同样<T>
通常是为类引用“模板”,请参阅List<MyCustomClass>
,我从未见过它在使用前为空