Jou*_*man 5 c# mapreduce mongodb
我正在尝试创建一个非常基本的map-reduce示例,该示例还在MapReduce api调用中包含查询.
我的收藏品有很多条目格式如下:
{ "_id" : { "$binary" : "PdYV4WMTAEyYMQHXJZfzvA==", "$type" : "03" },
"firstname" : "Matthew",
"surname" : "Chambers",
"email" : "" }
Run Code Online (Sandbox Code Playgroud)
代码如下:
var map = @"
function() {
emit(this.surname, { count : 22 });
}";
var reduce = @"
function(key, emitValues) {
return { count : emitValues[0].count };
}";
List<BsonValue> contactIds = new List<BsonValue>();
contactIds.Add(new Guid("A04FC88D-7BF7-443D-B5C3-EB11EE2B36DF"));
contactIds.Add(new Guid("26B690B3-5ED7-47F4-A878-3906E28BBC58"));
MongoDB.Driver.Builders.QueryConditionList queryList = MongoDB.Driver.Builders.Query.In("_id", BsonArray.Create(contactIds));
//var mr = personCollection.MapReduce(map, reduce);// THIS WORKS!
var mr = personCollection.MapReduce(queryList, map, reduce); // THIS FAILS
Run Code Online (Sandbox Code Playgroud)
如果我在MapReduce调用中不包含queryList,则一切正常.但是,如果我确实包含queryList,那么我会收到以下运行时错误:
命令'mapreduce'失败:db断言失败(响应:{"断言":"'out'必须是字符串或对象","assertionCode":13606,"errmsg":"db assertion failure","ok" :0})MongoDB.Driver中的MongoDB.Driver.MongoDatabase.RunCommandAs [TCommandResult](IMongoCommand命令)位于C:\ work\10gen\mongodb\mongo-csharp-driver\Driver\Core\MongoDatabase.cs:第621行. MongoCollection.MapReduce(BsonJavaScript map,BsonJavaScript reduce,IMongoMapReduceOptions选项)位于C:\ work\10gen\mongodb\mongo-csharp-driver\Driver\Core\MongoCollection.cs:第788行MongoDB.Driver.MongoCollection.MapReduce(IMongoQuery查询) ,BsonJavaScript map,BsonJavaScript reduce)在C:\ work\10gen\mongodb\mongo-csharp-driver\Driver\Core\MongoCollection.cs:第823行,位于C:\ Inetpub\wwwroot中的HPSLucene.Models.Mongo.MapReduce()\HPSLucene\HPSLucene\Models\Mongo.cs:第158行
谁知道问题是什么?非常感谢.
看起来它已经将您的呼叫与您认为正在呼叫的那个超载匹配
即你打算调用(查询,映射,减少)重载,但实际上它调用(map,reduce,options)重载.这会给你错误,因为你的第三个arg不是一个有效的选项参数.
尝试使用以下重载:(查询,映射,减少,选项)它将工作,因为不会混淆使用什么.
例如,要返回内联的M/R结果,而不是存储在集合中:
var mr = personCollection.MapReduce(queryList, map, reduce,
MapReduceOptions.SetOutput(MapReduceOutput.Inline));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5100 次 |
| 最近记录: |