MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Aggregazione MongoDB con DBRef

Non puoi utilizzare DBRef valori con il framework di aggregazione. Invece è necessario utilizzare l'elaborazione JavasScript di mapReduce per accedere alla denominazione della proprietà che utilizzano:

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 }
    }
)

Davvero non dovresti usare DBRef affatto. L'utilizzo è sostanzialmente deprecato ora e se ritieni di aver bisogno di un riferimento esterno, dovresti "fare riferimento manualmente" a questo con il tuo codice o implementato da qualche altra libreria, con la quale puoi farlo in un modo molto più supportato.