Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB C#驱动程序2.0:如何从MapReduceAsync获得结果_C#_Mongodb_Asynchronous_Mapreduce_Mongodb Csharp 2.0 - Fatal编程技术网

MongoDB C#驱动程序2.0:如何从MapReduceAsync获得结果

MongoDB C#驱动程序2.0:如何从MapReduceAsync获得结果,c#,mongodb,asynchronous,mapreduce,mongodb-csharp-2.0,C#,Mongodb,Asynchronous,Mapreduce,Mongodb Csharp 2.0,MongoDB C#驱动程序2.0:如何从MapReduceAsync获得结果 我使用的是MongoDB版本3,C#driver 2.0,将得到MapReduceAsync方法的结果。 我有这个“用户”集合: VisualStudio中的代码: var map = new BsonJavaScript( @" var map = function() { emit(NumberInt(1), this.age); };"); var reduce =

MongoDB C#驱动程序2.0:如何从MapReduceAsync获得结果

我使用的是MongoDB版本3,C#driver 2.0,将得到MapReduceAsync方法的结果。 我有这个“用户”集合:

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...
}
var-map=new-BsonJavaScript(@)
var map=function()
{
emit(numberprint(1),这个年龄);
};");
var reduce=new BsonJavaScript(@)
var reduce=函数(键、值)
{
var总和=0;
值。forEach(函数(项)
{
总和+=编号(项目);
});
回报金额;
};");
var coll=db.GetCollection(“用户”);
var options=新的MapReduceOptions()//TResult应该是什么?
options.OutputOptions=MapReduceOutputOptions.Inline;
var res=coll.MapReduceAsync(映射、还原、选项).Result.tolistSync();
//获取res的值。。。
//或者如果结果是一个列表。。。
foreach(资源中的var项目)
{
//获取值并做一些事情。。。
}

TResult可以是一个BsonDocument,也可以是一个表示类型reduce item结果的特定类

我认为对于您的示例,您可以有这样一个泛型类:

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

    public T value { get; set; }
}
公共类SimpleReduceResult
{
公共字符串Id{get;set;}
公共T值{get;set;}
}
你的期权声明是

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