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

Agregujte a redukujte vnořené pole na základě ObjectId

Můžete použít $filter s $map změnit tvar dat a filtrovat podle _id . Poté můžete nadále používat $push s $ifNull pro poskytnutí výchozí hodnoty, pokud je pole prázdné:

db.collection.aggregate([
    {
        $addFields: {
            employeeResponses: {
                $map: {
                    input: {
                        $filter: {
                            input: "$employeeResponses",
                            cond: {
                                $eq: [ "$$this._id", "5d978d372f263f41cc624727"]
                            }
                        }
                    },
                    in: "$$this.response"
                }
            }
        }
    },
    {
        $group: {
            _id: null,
            responses: { $push: { $ifNull: [ { $arrayElemAt: [ "$employeeResponses", 0 ] }, "No response" ] } }
        }
    }
])

Hřiště Mongo




  1. Mongoose - Jak seskupit podle a naplnit?

  2. Udržování otevřeného připojení Redis pomocí BookSleeve

  3. MongoDB:Použití $sample s ovladačem C#

  4. MongoDB:Spočítat, kolik z jednotlivých hodnot existuje?