Не можете да използвате DBRef
стойности с рамката за агрегиране. Вместо това трябва да използвате JavasScript обработка на mapReduce
за достъп до именуването на свойството, което използват:
db.coll.mapReduce(
function() {
emit( this.source.$ref, this["total_price"] )
},
function(key,values) {
return Array.sum( values );
},
{
"query": { "sold_at": { "$gte": start, "$lt": end } },
"out": { "inline": 1 }
}
)
Наистина не трябва да използвате DBRef
изобщо. Използването е основно отхвърлено сега и ако смятате, че имате нужда от някакво външно препращане, тогава трябва да "ръчно препращате" това с вашия собствен код или да се внедри от друга библиотека, с която можете да го направите по много по-поддържан начин.