2016-07-20 5 views
0

私は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); 

インタラクションクラスは単にゲッタリングされたコードとセッタークラスの、コードは以下の通りである:

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簡単な質問:

  1. Aggreを使用する方法を正確に上記のシナリオでゲート機能。私が何か悪いことをしているなら、私を案内してください。

  2. MongoCollectionとIMongoCollectionsの2つの別個のコレクションとは何ですか?

私を助けてください。事前にありがとう

+0

誰かが私は.Aggregateを考える関連リンクを閲覧した後、この初心者くさい:( – user5510044

+0

を助けてください()関数はおそらく、最新のMongoバージョンでは廃止されました。私は3.2を使用しています。また、多くのヘルプはオンラインで利用できません。 – user5510044

+0

あなたのC#クラスを追加し、ドライババージョン – profesor79

答えて

0

そこには<>があるはずですか?私はそれを指示する文書を見つけることができません。また

<T>は、クラスのための「テンプレート」を参照してList<MyCustomClass>を参照することは通常であり、私はそれが前に空の使用見たことがない

+0

私は<>を空にしておくことを言っていません。私はちょうどintellisenseがVSで私に示したものの上に書いてあり、私はそれを使う方法がわかりません。 – user5510044

+0

あなたはおそらく<>をスキップします。 – Dagurdan

+0

申し訳ありませんが、あなたがここに提案しているものは得られませんでした。説明していただけますか? – user5510044

関連する問題