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