sql >> Databasteknik >  >> NoSQL >> MongoDB

beräknande medelvärde i Mongoose

Du kan inte referera till $Comments.Rating eftersom kommentarerna finns i en separat samling och produktdokumentationen bara innehåller en referens till dem.

Så istället måste du emulera en join med ett par steg:

// 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) {...});
});



  1. Hur man hittar dokument med exakt samma arrayposter som i en fråga

  2. Redis är en tråd. Varför ska jag då använda sallad?

  3. Ordning av nyckelvärden i mongoDb

  4. delar IO-objekt i flera nodinstanser