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

Mongodb Forsøger at få udvalgte felter til at returnere fra aggregat

Stort set her, $project er afhængig af den "absolutte vej" til feltegenskaben i dokumentet på "højre side". Genveje såsom 1 er kun for, hvor dette element faktisk er det øverste niveau af dokumentet.

Du skal også være i stand til at beholde felter, når du $gruppe , så det er her du bruger forskellige grupperingsoperatorer såsom $first og $addToSet eller $push for at beholde den information, du henter fra det indre array. Og du skal $unwind dobbelt her, da du kombinerer "typer" på tværs af dokumenter, og du ikke kun ønsker $first i dette tilfælde.

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. MongoDB:indsæt dokumenter med specifikt id i stedet for autogenereret ObjectID

  2. Redis Sentinel

  3. Hvad er det maksimale antal shards MongoDB kan have?

  4. Mongoose:hvad er forskellene mellem Model.create og Collection.insert