MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

calculer la moyenne en mangouste

Vous ne pouvez pas référencer $Comments.Rating parce que les commentaires sont dans une collection séparée et que les docs du produit contiennent juste une référence à eux.

Au lieu de cela, vous devez émuler une jointure en quelques étapes :

// 1. Get the product's Comments array of comment ids.
Product.findOne(id, 'Comments', function(err, product) {
    // 2. Filter Comments to just those in product.Comments and average the Rating
    Comments.aggregate([
        {$match: {_id: {$in: product.Comments}}},
        {$group: {_id: product._id, average: {$avg: '$Rating'}}}
    ], function (err, result) {...});
});