sql >> データベース >  >> NoSQL >> MongoDB

ObjectIdに基づいてネストされた配列を集約および縮小します

    $filter を使用できます $map を使用 データの形状を変更し、_idでフィルタリングします 。その後、 $push を引き続き使用できます。 $ifNull を使用 配列が空の場合にデフォルト値を提供するには:

    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" ] } }
            }
        }
    ])
    

    Mongo Playground




    1. MongoDbセーヴィングは、PHPクラスのプライベートメンバーに対してエラーをスローします

    2. Squeeze用のMongoDBPowerPCのインストール

    3. MongoDBのドキュメントフィールドをコピーして名前を変更します

    4. 1つのコマンドでクエリと挿入