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); }
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); } }); }