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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB C#驱动程序2.0:如何从MapReduceAsync获取结果相关的知识,希望对你有一定的参考价值。

MongoDB 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" }

Visual Studio中的代码:

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...
}
答案

TResult可以是BsonDocument或表示类型reduce项的结果的特定类。

我想对于你的例子,你可以有一个像这样的泛型类:

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

    public T value { get; set; }
}

你的选择声明就是

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

以上是关于MongoDB C#驱动程序2.0:如何从MapReduceAsync获取结果的主要内容,如果未能解决你的问题,请参考以下文章

C# mongodb driver 2.0 - 如何在批量操作中更新插入?

使用updateMany的upsert的MongoDB c#驱动程序

MapR 分发中使用的容器架构是啥?

EOS1.2.0版本发布:MongoDB插件增强功能,社区插件集成和重放优化

是否仍然需要承诺 MongoDB 驱动程序?

MongoDb c# driver 2.0 查询样式