sql >> Databáze >  >> NoSQL >> MongoDB

Mongodb Snaží se získat vybraná pole pro návrat z agregace

Z velké části zde hovoříme o $project spoléhá na "absolutní cestu" k vlastnosti pole v dokumentu na "pravé" straně. Zkratky jako 1 jsou pouze tam, kde je tento prvek ve skutečnosti nejvyšší úrovní dokumentu.

Také musíte být schopni zachovat pole, když $group , takže zde používáte různé operátory seskupení, jako je $first a $addToSet nebo $push k uchování informací, které stahujete z vnitřního pole. A musíte $unwind dvakrát zde, protože kombinujete "typy" napříč dokumenty a nechcete pouze $first v tomto případě.

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 - Agregovat více řádků

  2. Mám přistupovat přímo k mongodb?

  3. Porovnání výkonu MongoDB na veřejných cloudech:AWS, Azure &DigitalOcean

  4. Mongo převede všechna číselná pole, která jsou uložena jako řetězec