Nie możesz użyć DBRef
wartości z ramami agregacji. Zamiast tego musisz użyć przetwarzania JavasScript mapReduce
aby uzyskać dostęp do nazw właściwości, których używają:
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 }
}
)
Naprawdę nie powinieneś używać DBRef
w ogóle. Użycie jest teraz w zasadzie przestarzałe i jeśli uważasz, że potrzebujesz zewnętrznego odniesienia, powinieneś „ręcznie odwoływać się” do tego za pomocą własnego kodu lub zaimplementowanego przez inną bibliotekę, dzięki której możesz to zrobić w znacznie bardziej obsługiwany sposób.