Я использую динамическую ссылку для выполнения запросов mapreduce, и у меня возникает проблема при попытке сгруппировать по нескольким значениям. Проверьте это:
Это прекрасно работает:
var query =
contentDeliveryAggregates.AsQueryable (). Где ("_ id.CId == 1 && _id.CdaId == 1 && _id.From> = @ 0 && _id.To <= @ 1", reportRequest.FromDate, reportRequest.ToDate).
GroupBy ("_ id.CdaId", "it").
Выберите («новый (ключ, сумма (значение. ЧБ) как пропускная способность)»); </p>
Это не:
var query =
contentDeliveryAggregates.AsQueryable (). Где ("_ id.CId == 1 && _id.CdaId == 1 && _id.From> = @ 0 && _id.To <= @ 1", reportRequest.FromDate, reportRequest.ToDate).
GroupBy ("new (_id.CdaId, _id.CId)", "it").
Выберите («новый (ключ, сумма (значение. ЧБ) как пропускная способность)»); </p>
Линк действителен (он прекрасно компилируется), но я получаю ошибку во время выполнения, потому что оператор mapreduce искажен. Вот оператор map-Reduce из второго запроса:
{"mapreduce": "Aggregates", "map": {"$ code": "function () {emit ({} this._id.CdaIdthis. id.CId, {\" $ f0 \ ": this.value.BW});}"}, "redu": {"$ code": "function (key, values) {var $ f0 = 0; values.forEach (function ( doc) { $ f0 + = doc. $ f0;}); return {\ " $ f0 \": _ $ f0};} "}," query ": {" _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, "out": {"inline": 1}}
Проверьте это утверждение emit; это испортилось ...
Я что-то не так делаю или это ошибка в свободном драйвере?