MapReduce API 호출에 쿼리를 통합하는 매우 기본적인 map-reduce 예제를 만들려고합니다. 다음과 같이MongoDB MapReduce 호출 내에서 쿼리를 포함하려고 시도했습니다.
내 컬렉션 형식의 항목이 많이있다 :
{ "_id" : { "$binary" : "PdYV4WMTAEyYMQHXJZfzvA==", "$type" : "03" },
"firstname" : "Matthew",
"surname" : "Chambers",
"email" : "" }
코드는 다음과 같다 : 나는 맵리 듀스 호출에 queryList에 포함되지 않습니다
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
그것은 모든 작동합니다. 그러나 queryList를 포함하면 다음 런타임 오류가 발생합니다.
Command 'mapreduce' failed: db assertion failure (response: { "assertion" : "'out' has to be a string or an object", "assertionCode" : 13606, "errmsg" : "db assertion failure", "ok" : 0 }) at MongoDB.Driver.MongoDatabase.RunCommandAs[TCommandResult](IMongoCommand command) in C:\work\10gen\mongodb\mongo-csharp-driver\Driver\Core\MongoDatabase.cs:line 621 at MongoDB.Driver.MongoCollection.MapReduce(BsonJavaScript map, BsonJavaScript reduce, IMongoMapReduceOptions options) in C:\work\10gen\mongodb\mongo-csharp-driver\Driver\Core\MongoCollection.cs:line 788 at MongoDB.Driver.MongoCollection.MapReduce(IMongoQuery query, BsonJavaScript map, BsonJavaScript reduce) in 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:line 158
누구나 무슨 문제인지 알 수 있습니까? 매우 감사합니다. 그것은 당신이 (쿼리,지도, 감소) 오버로드를 호출하고자하고 있지만, 실제로는 (지도를 부르고, 즉 당신이
를 호출 생각하는 것과 다른 과부하에 전화를 일치하는 것처럼
어떤 버전의 C# 드라이버를 사용하고 있습니까? – AdaTheDev
현재 드라이버 버전에서 1.0.0.4098 – Journeyman