【发布时间】: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”声明并将函数定义为字符串。
-
行得通!如果您将回复从评论更改为回复,我会接受:)