sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongodb Försöker få utvalda fält att returnera från aggregat

I stort sett här, $project förlitar sig på den "absoluta sökvägen" till fältegenskapen i dokumentet på "höger sida". Genvägar som 1 är bara för där det elementet faktiskt är dokumentets översta nivå.

Du måste också kunna behålla fält när du $grupp , så det är här du använder olika grupperingsoperatorer som $first och $addToSet eller $push för att hålla informationen du hämtar från den inre arrayen. Och du måste $unwind dubbelt så bra här eftersom du kombinerar "typer" över dokument och du inte bara vill ha $first i det här fallet.

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. Filtrera och ordna om resultaten med node.js och mongodb enligt datum (månad)

  2. Hämta ljud - binär fil - lagrad i min Mlab

  3. Ta bort ett enstaka objekt från en array av objekt i MongoDB

  4. mongodb-index som täcker saknade värden