public IEnumerable <Query4> Get()
        {
            //Initialisation de la collection
            var collection = MongoDBInstance.GetMongoDatabase;

            //R4
            var pipelineQ4 = new BsonDocument[]
            {
                new BsonDocument("$group", new BsonDocument()
                                 .Add("_id", "$gender")
                                 .Add("sum", new BsonDocument()
                                      .Add("$sum", 1.0))),
                new BsonDocument("$group", new BsonDocument()
                                 .Add("_id", BsonNull.Value)
                                 .Add("count", new BsonDocument()
                                      .Add("$sum", "$sum"))
                                 .Add("sexe", new BsonDocument()
                                      .Add("$push", new BsonDocument()
                                           .Add("gender", "$_id")
                                           .Add("nombre", "$sum")))),
                new BsonDocument("$unwind", new BsonDocument()
                                 .Add("path", "$sexe")),
                new BsonDocument("$project", new BsonDocument()
                                 .Add("sexe", "$sexe.gender")
                                 .Add("nb_emp", "$sexe.nombre")
                                 .Add("total_emp", "$count")
                                 .Add("percent", new BsonDocument()
                                      .Add("$multiply", new BsonArray()
                                           .Add(new BsonDocument()
                                                .Add("$divide", new BsonArray()
                                                     .Add("$sexe.nombre")
                                                     .Add("$count")))
                                           .Add(100.0))
                                      ))
            };
            var resultBsonDocumentQ4 = collection.Aggregate <BsonDocument>(pipelineQ4).ToList();

            Query4[] resultQuery4 = new Query4[resultBsonDocumentQ4.Count];
            for (int i = 0; i < resultBsonDocumentQ4.Count; ++i)
            {
                resultQuery4[i] = BsonSerializer.Deserialize <Query4>(resultBsonDocumentQ4[i]);
            }
            return(resultQuery4);
        }
Exemplo n.º 2
0
 public static void ReadQuery4Data(string str)
 {
     IEnumerable<string> lines = File.ReadLines(Path.GetFullPath(str));
       var line = lines.Where(x => (x != ""));
       object lock_query = new object();
       Parallel.ForEach(line, l =>
       {
     try
     {
       string[] datas = l.Split('\t', ',');
       int k1 = Convert.ToInt32(datas[0].Trim('"'));
       int k2 = Convert.ToInt32(datas[1].Trim('"'));
       int k3 = Convert.ToInt32(datas[2].Trim('"'));
       int k4 = Convert.ToInt32(datas[3].Trim('"'));
       int p = Convert.ToInt32(datas[4].Trim('"'));
       double lkp = Convert.ToDouble(datas[5].Trim('"'));
       double pagerank = Convert.ToDouble(datas[7].Trim('"'));
       double ukp = Convert.ToDouble(datas[8].Trim('"'));
       double rcm = CalculateRCM(k1, k2,k3,k4, p);
       Tuple<int, int, int,int> keywords = Tuple.Create(k1, k2, k3,k4);
       lock (lock_query)
       {
     if (dicQuery4.Keys.Contains(keywords))
     {
       dicQuery4[keywords].dicResultsLKP.Add(p, lkp);
       dicQuery4[keywords].dicResultsUKP.Add(p, ukp);
       dicQuery4[keywords].dicResultsPagerank.Add(p, pagerank);
       dicQuery4[keywords].dicResultsRCM.Add(p, rcm);
     }
     else
     {
       Query4 q = new Query4(k1, k2, k3,k4);
       q.dicResultsLKP.Add(p, lkp);
       q.dicResultsUKP.Add(p, ukp);
       q.dicResultsPagerank.Add(p, pagerank);
       q.dicResultsRCM.Add(p, rcm);
       dicQuery4.Add(keywords, q);
     }
       }
     }
     catch (Exception ex)
     {
       Console.WriteLine("Error {0} at line:{1}", ex.Message, l);
     }
       });
 }