【问题标题】:MapReduce works in Mongo Shell, not in C#MapReduce 在 Mongo Shell 中工作,而不是在 C# 中
【发布时间】:2014-04-09 20:48:47
【问题描述】:

我正在尝试在我的应用程序中运行 MapReduce 查询。我已经创建了相关的 JS,并通过 Mongo-Shell 对其进行了验证:

var map = function() {
    if (this.class_artist != null)
    for (var i = 0; i < this.class_artist.length; i++) {
        var key = {
            artist: this.class_artist[i],
            language:  this.language.substring(0,2),
        };
        var value = {
            count: 1
        };
        emit(key, value);
    }
}
var reduce = function(key, value) {
    var sum = 0;
    value.forEach(function(value) {
        sum += value['count'];
    });
    return {count: sum};
}
db.articles.mapReduce(map, reduce, {out: {inline: 1}})

我有以下 c# 翻译:

    var articleCollection = database.GetCollection<Article_Base>("articles");

string map = @"var map = function() {
            if (this.class_artist != null)
            for (var i = 0; i < this.class_artist.length; i++) {
                var key = {
                    artist: this.class_artist[i],
                    language:  this.language.substring(0,2),
                };
                var value = {
                    count: 1
                };
                emit(key, value);
            }
        }";
string reduce = @"var reduce = function(key, value) {
            var sum = 0;
            value.forEach(function(value) {
                sum += value['count'];
            });
            return {count: sum};
        }";
var options = new MapReduceOptionsBuilder();
options.SetOutput(MapReduceOutput.Inline);
var result = articleCollection.MapReduce(map, reduce, options).GetResults();

但是,即使我使用相同的 map 和 reduce 函数,c# 代码也不会返回任何结果。

我是 mapReduce 的新手,尽管阅读了文档,但我不确定如何继续。

任何帮助将不胜感激!

【问题讨论】:

  • 尝试删除“var”声明并将函数定义为字符串。
  • 行得通!如果您将回复从评论更改为回复,我会接受:)

标签: c# mongodb


【解决方案1】:

你的翻译太直白了,你只需要将函数定义为字符串即可:

string map = @"function() {" // and the rest of it

那么mapReduce方法有东西要处理

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多