MongoDB C#驱动程序2.0:如何从MapReduceAsync获得结果
MongoDB C#驱动程序2.0:如何从MapReduceAsync获得结果 我使用的是MongoDB版本3,C#driver 2.0,将得到MapReduceAsync方法的结果。 我有这个“用户”集合: VisualStudio中的代码: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 =
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>>();