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

MongoDBにネストされた$addFields

    $unwindを使用しているため $matchを追加することで、これを簡単に行うことができます 式以降:"inquiries.routeHistory.status": "ended" trueを返します 何かがある場合 routeHistoryのドキュメント そのようなステータスを持っている:

    db.collection.aggregate([
        {
            $unwind: "$inquiries"
        },
        {
            $match: {
                "inquiries.routeHistory.status": "ended"
            }
        },
        {
            $addFields: {
                "inquiries.routeHistory": {
                    $filter: {
                        input: "$inquiries.routeHistory",
                        cond: {
                            $eq: [ { $max: "$inquiries.routeHistory.routeDate" }, "$$this.routeDate" ]
                        }
                    }
                }
            }
        },
        {
            $group: {
                _id: "$_id",
                callId: { $first: "$callId" },
                caller: { $first: "$caller" },
                inquiries: { $push: "$inquiries" }
            }
        }
    ])
    

    Mongo Playground




    1. OpenedXMongoDBデータベースをバックアップする方法

    2. EVAL、SCAN、およびDELを使用したRedisワイルドカード削除スクリプトは、非決定論的コマンドの後に許可されていない書き込みコマンドを返します

    3. djangoでpymongoを直接使用する

    4. Hadoopおよび関連するビッグデータテクノロジーを備えたMongoDB®