Beispiel #1
0
        private void DoMapreduce(object state)
        {
            try
            {
                MongoMapReduceTask map_reduce_task = (MongoMapReduceTask)state;
                logger.LogInformation($"Mongo MapReduce is working. {map_reduce_task.ResultDatabase}.{map_reduce_task.ResultCollection}.mapreduce()");

                string mapFile     = File.ReadAllText(map_reduce_task.GetMapFunctionFileName("MapReduceFunction"));
                string ReduceFile  = File.ReadAllText(map_reduce_task.GetReduceFunctionFileName("MapReduceFunction"));
                var    db          = client.GetDatabase(map_reduce_task.Database);
                var    collections = db.GetCollection <BsonDocument>(map_reduce_task.Collection);
                var    options     = new MapReduceOptions <BsonDocument, BsonDocument>();
                options.JavaScriptMode = true;
                options.OutputOptions.ToJson();
                options.OutputOptions = MapReduceOutputOptions.Merge(map_reduce_task.ResultCollection, map_reduce_task.ResultDatabase);
                var asyncResults = collections.MapReduce <BsonDocument>(mapFile, ReduceFile, options);
                if (asyncResults != null)
                {
                    logger.LogInformation($"Mongo MapReduce is completed. {map_reduce_task.ResultDatabase}.{map_reduce_task.ResultCollection}.mapreduce()");
                }
            }
            catch (Exception ex)
            {
                logger.LogError(ex, ex.Message);
            }
        }
Beispiel #2
0
 static async void DoMapReduce()
 {
     try
     {
         string mapFile      = File.ReadAllText(GetPath("MapReducer", "Map.js"));
         string ReduceFile   = File.ReadAllText(GetPath("MapReducer", "Reduce.js"));
         string FinalizeFile = File.ReadAllText(GetPath("MapReducer", "Finalize.js"));
         Console.WriteLine("Hello World!");
         MongoDB.Driver.MongoClient client = new MongoDB.Driver.MongoClient("mongodb://192.168.0.40:27088");
         var db          = client.GetDatabase("PEIU");
         var collections = db.GetCollection <BsonDocument>("daegun_meter");
         var options     = new MapReduceOptions <BsonDocument, BsonDocument>();
         options.JavaScriptMode = true;
         options.OutputOptions.ToJson();
         options.OutputOptions = MapReduceOutputOptions.Merge("statistics");
         var asyncResults = collections.MapReduce <BsonDocument>(mapFile, ReduceFile, options);
         var list         = asyncResults.ToList();
         foreach (var list_element in list)
         {
             Console.WriteLine(list_element.ToString());
         }
         Console.ReadKey();
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
Beispiel #3
0
        public object mapReduce(object map, object reduce, object options)
        {
            var mapReduceOptions = new MapReduceOptions <BsonDocument, BsonDocument>();

            object sort = options.GetProperty("sort");

            if (sort != null)
            {
                mapReduceOptions.Sort = new BsonDocumentSortDefinition <BsonDocument>(sort.ToBsonDocument());
            }

            object query = options.GetProperty("query");

            if (query != null)
            {
                mapReduceOptions.Filter = new BsonDocumentFilterDefinition <BsonDocument>(query.ToBsonDocument());
            }

            object scope = options.GetProperty("scope");

            if (scope != null)
            {
                mapReduceOptions.Scope = scope.ToBsonDocument();
            }

            object limit = options.GetProperty("limit");

            if (limit != null)
            {
                mapReduceOptions.Limit = limit.ToIntOrDefault();
            }

            object verbose = options.GetProperty("verbose");

            if (limit != null)
            {
                mapReduceOptions.Verbose = verbose.ToBoolOrDefault();
            }

            object jsMode = options.GetProperty("jsMode");

            if (jsMode != null)
            {
                mapReduceOptions.JavaScriptMode = jsMode.ToBoolOrDefault();
            }

            object bypassDocumentValidation = options.GetProperty("bypassDocumentValidation");

            if (bypassDocumentValidation != null)
            {
                mapReduceOptions.BypassDocumentValidation = bypassDocumentValidation.ToBoolOrDefault();
            }

            object finalize = options.GetProperty("finalize");

            if (finalize != null)
            {
                mapReduceOptions.Finalize = new BsonJavaScript(finalize.ToStringOrDefault());
            }

            object outCollection = options.GetProperty("out");

            if (outCollection is string)
            {
                mapReduceOptions.OutputOptions = MapReduceOutputOptions.Replace(outCollection.ToStringOrDefault());
            }
            if (outCollection is IDictionary <string, object> )
            {
                var    outDicionary = (IDictionary <string, object>)outCollection;
                object inline       = outDicionary.GetValueOrDefault2("inline");
                if (inline != null)
                {
                    mapReduceOptions.OutputOptions = MapReduceOutputOptions.Inline;
                }
                else
                {
                    string replaceAction = outDicionary.GetValueOrDefault2("replace").ToStringOrDefault();
                    string mergeAction   = outDicionary.GetValueOrDefault2("merge").ToStringOrDefault();
                    string reduceAction  = outDicionary.GetValueOrDefault2("reduce").ToStringOrDefault();

                    string db        = outDicionary.GetValueOrDefault2("db").ToStringOrDefault();
                    bool?  nonAtomic = outDicionary.GetValueOrDefault2("nonAtomic").ToBoolOrDefault();
                    bool?  sharded   = outDicionary.GetValueOrDefault2("sharded").ToBoolOrDefault();

                    if (replaceAction != null)
                    {
                        mapReduceOptions.OutputOptions = MapReduceOutputOptions.Replace(replaceAction, db, sharded);
                    }
                    if (mergeAction != null)
                    {
                        mapReduceOptions.OutputOptions = MapReduceOutputOptions.Merge(mergeAction, db, sharded, nonAtomic);
                    }
                    if (reduceAction != null)
                    {
                        mapReduceOptions.OutputOptions = MapReduceOutputOptions.Reduce(reduceAction, db, sharded, nonAtomic);
                    }
                }
            }

            return(new MongoEvaluatedCursor <BsonDocument>(
                       _collection.MapReduce <BsonDocument>(
                           new BsonJavaScript(map.ToStringOrDefault()),
                           new BsonJavaScript(reduce.ToStringOrDefault()),
                           mapReduceOptions)
                       ));
        }