2015-08-02 4 views
1

MongoDB C# 2.0 драйвер: Как получить результат от MapReduceAsyncMongoDB C 2.0 драйвер #: Как получить результат от MapReduceAsync

Я использую MongoDB версии 3, C# драйвер 2,0 и получите результат метода MapReduceAsync , У меня есть эта коллекция «пользователи»:

{ "_id" : 1, "firstName" : "Rich", "age" : "18" } 
{ "_id" : 2, "firstName" : "Rob", "age" : "25" } 
{ "_id" : 3, "firstName" : "Sarah", "age" : "12" } 

Код в VisualStudio:

var map = new BsonJavaScript(@" 
    var map = function() 
    { 
     emit(NumberInt(1), this.age); 
    };"); 

var reduce = new BsonJavaScript(@" 
    var reduce = function(key, values) 
    { 
     var sum = 0; 

     values.forEach(function(item) 
     { 
      sum += NumberInt(item); 
     }); 

     return sum; 
    };"); 

var coll = db.GetCollection<BsonDocument>("users"); 
var options = new MapReduceOptions<BsonDocument, TResult>();//what should be TResult? 

options.OutputOptions = MapReduceOutputOptions.Inline; 

var res = coll.MapReduceAsync(map, reduce, options).Result.ToListAsync(); 

//get the values of res... 

//or if the result is a list... 
foreach(var item in res) 
{ 
    //get the values and do something... 
} 

ответ

0

TResult может быть BsonDocument или конкретный класс, который представляет собой результат типа уменьшения элемента.

Я думаю, для примера, вы могли бы иметь общий класс вроде этого:

public class SimpleReduceResult<T> 
{ 
    public string Id { get; set; } 

    public T value { get; set; } 
} 

И ваши варианты декларации будет

var options = new MapReduceOptions<BsonDocument, SimpleReduceResult<int>>();