動的リンクを使用して mapreduce クエリを実行していますが、複数の値でグループ化しようとすると問題が発生します。これをチェックしてください:
これはうまくいきます:
var query = contentDeliveryAggregates.AsQueryable().Where("_id.CId == 1 && _id.CdaId == 1 && _id.From >= @0 && _id.To <= @1", reportRequest.FromDate, reportRequest.ToDate )。GroupBy("_id.CdaId", "それ")。Select("new(key,Sum(value.BW) as Bandwidth)");
これはしません:
var query = contentDeliveryAggregates.AsQueryable().Where("_id.CId == 1 && _id.CdaId == 1 && _id.From >= @0 && _id.To <= @1", reportRequest.FromDate, reportRequest.ToDate )。GroupBy("new(_id.CdaId, _id.CId)", "それ"). Select("new(key,Sum(value.BW) as Bandwidth)");
linq は有効ですが (正常にコンパイルされます)、mapreduce ステートメントの形式が正しくないため、実行時エラーが発生します。2 番目のクエリの map-reduce ステートメントは次のとおりです。
{ "mapreduce" : "Aggregates", "map" : { "$code" : "function() { emit({}this._id.CdaIdthis. id.CId, {\" $f0\": this.value. BW}); }" }, "reduce" : { "$code" : "function(key, values) {var $f0 = 0;values.forEach(function(doc) { $f0 += doc. $f0; });return { \" $f0\": _$f0};}" }, "クエリ" : { "_id.CId" : 1, "_id.CdaId" : 1, "_id.From" : { " $gte" : ISODate("2012-02-01T08:00:00Z") }, " id.To" : { "$lte" : ISODate("2012-02-11T08:00:00Z") } }, " finalize" : { "$code" : "function(key, value) { return { \" $f0\": value._$f0};}" }, "limit" :0、「アウト」: {「インライン」: 1 } }
その emit ステートメントを確認してください。めちゃくちゃです...
私は何か間違ったことをしていますか、それとも流暢なドライバーのバグですか?