1

我正在使用动态链接来运行 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(“新(_id.CdaId,_id.CId)”,“它”)。Select("new(key,Sum(value.BW) as Bandwidth)");

linq 是有效的(它编译得很好),但我得到一个运行时错误,因为 mapreduce 语句格式错误。这是第二个查询中的 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 } }

查看那个发出语句;搞砸了……

我做错了什么还是流利的驱动程序中的错误?

4

1 回答 1

0

来自 mongodb linq 教程 http://www.mongodb.org/display/DOCS/CSharp+Driver+LINQ+Tutorial

“仅支持可以转换为等效 MongoDB 查询的 LINQ 查询。如果您编写无法转换的 LINQ 查询,您将收到运行时异常,并且错误消息将指示查询的哪一部分不受支持。 "

不幸的是 group by 不在支持列表中,希望有人会尽快添加它

于 2012-10-24T07:32:57.047 回答