MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Agregação do MongoDB com DBRef


Você não pode usar DBRef valores com a estrutura de agregação. Em vez disso, você precisa usar o processamento JavasScript de mapReduce para acessar a nomenclatura de propriedade que eles usam:
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 }
    }
)

Você realmente não deveria estar usando DBRef de forma alguma. O uso está basicamente obsoleto agora e se você sentir que precisa de alguma referência externa, deve "referenciar manualmente" isso com seu próprio código ou implementado por alguma outra biblioteca, com a qual você pode fazer isso de uma maneira muito mais suportada.