sql >> Database >  >> NoSQL >> MongoDB

Mongodb Proberen geselecteerde velden terug te laten komen uit het aggregaat

Grotendeels hier, $project vertrouwt op het "absolute pad" naar de veldeigenschap in het document aan de "rechterkant". Sneltoetsen zoals 1 zijn alleen voor waar dat element eigenlijk het hoogste niveau van het document is.

U moet ook velden kunnen behouden wanneer u $group , dus hier gebruik je verschillende groeperingsoperatoren zoals $first en $addToSet of $push om de informatie die u uit de binnenste array haalt, te behouden. En je moet $unwind hier ook twee keer omdat je "typen" in documenten combineert en je niet alleen de $first in dit geval.

OrderModel.aggregate([
    { "$unwind": "$products" },
    { "$unwind": "$products.types" },
    { "$group": {
        "_id": "$products.name",
        "active": { "$first": "$products.active" },
        "types": { "$addToSet": "$products.types" },
        "quantity": { "$sum": 1 }
    }},
    { "$project": {
        "_id": 0,
        "name": "$_id",
        "active": 1,
        "types": 1,
        "quantity": 1
    }}
],function(err,results) {

});



  1. Meertalige attributen in MongoDB

  2. Kan mongo-opdracht niet gebruiken, toont opdracht niet gevonden op mac

  3. hoe kan ik mijn mangoest-query herschrijven nadat ik gegevens van het ene model in twee heb gesplitst?

  4. Mongodb c#-stuurprogramma en ISODate