【发布时间】:2011-04-05 12:33:53
【问题描述】:
我正在尝试创建一个非常基本的 map-reduce 示例,该示例还在 MapReduce api 调用中合并了一个查询。
我的收藏有很多格式如下:
{ "_id" : { "$binary" : "PdYV4WMTAEyYMQHXJZfzvA==", "$type" : "03" },
"firstname" : "Matthew",
"surname" : "Chambers",
"email" : "" }
代码如下:
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
如果我没有在 MapReduce 调用中包含 queryList,这一切都有效。但是,如果我确实包含了 queryList,那么我会收到以下运行时错误:
命令'mapreduce'失败:db断言失败(响应:{“assertion”:“'out'必须是字符串或对象”,“assertionCode”:13606,“errmsg”:“db断言失败”, “好”:0}) 在 C:\work\10gen\mongodb\mongo-csharp-driver\Driver\Core\MongoDatabase.cs: MongoDB.Driver.MongoCollection.MapReduce 中的 MongoDB.Driver.MongoDatabase.RunCommandAs[TCommandResult](IMongoCommand 命令):第 621 行( BsonJavaScript map, BsonJavaScript reduce, IMongoMapReduceOptions options) 在 C:\work\10gen\mongodb\mongo-csharp-driver\Driver\Core\MongoCollection.cs: MongoDB.Driver.MongoCollection.MapReduce(IMongoQuery 查询, BsonJavaScript map, BsonJavaScript reduce) 在 C:\work\10gen\mongodb\mongo-csharp-driver\Driver\Core\MongoCollection.cs:line 823 at HPSLucene.Models.Mongo.MapReduce() in C:\Inetpub\wwwroot\HPSLucene\HPSLucene \Models\Mongo.cs:第 158 行
有人知道问题出在哪里吗?非常感谢。
【问题讨论】:
-
您使用的是什么版本的 C# 驱动程序?