MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB-Aggregation mit DBRef

Sie können DBRef nicht verwenden Werte mit dem Aggregationsframework. Stattdessen müssen Sie die JavasScript-Verarbeitung von mapReduce verwenden um auf die Eigenschaftsbenennung zuzugreifen, die sie verwenden:

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

Sie sollten DBRef wirklich nicht verwenden überhaupt. Die Verwendung ist jetzt im Grunde veraltet, und wenn Sie das Gefühl haben, dass Sie eine externe Referenzierung benötigen, sollten Sie dies mit Ihrem eigenen Code "manuell referenzieren" oder von einer anderen Bibliothek implementieren, mit der Sie dies auf eine viel besser unterstützte Weise tun können. P>