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

mongoDBAggregationが空に戻ります

    次の集計パイプラインを試してください。非アクティブな要素に対して空の配列は返されませんが、結果に近くなります。

    db.collection.aggregate([
        {
            "$match": {
                "name": "Andre",
                "$or": [
                    { "fruits.active": true },
                    { "cars.active": true }
                ]
            }
        },
        { "$unwind": "$fruits" },
        { "$unwind": "$cars" },
        {
            "$match": {            
                "$or": [
                    { "fruits.active": true },
                    { "cars.active": true }
                ]
            }
        },
        {
            "$project": {
                "name": 1,
                "active_cars": "$cars.active",
                "active_fruits": "$fruits.active",
                "cars": 1,
                "fruits": 1
            }
        },
        {
            "$project": {
                "name": 1,
                "cars": {
                    "$cond": [
                        { "$eq": ["$active_cars", true] },
                        "$cars",
                        {}
                    ]
                },
                "fruits": {
                    "$cond": [
                        { "$eq": ["$active_fruits", true] },
                        "$fruits",
                        {}
                    ]
                }
            }
        },   
        { 
            "$group": {
                "_id": {
                    "_id": "$_id",
                    "name": "$name"
                },
                "cars": { "$addToSet" : "$cars" },
                "fruits": { "$addToSet" : "$fruits" }
            }
        },
        {
            "$project": {
                "_id": 0,
                "name": "$_id.name",
                "cars": 1,
                "fruits": 1
            }
        }    
    ])
    

    出力

    /* 1 */
    {
        "result" : [ 
            {
                "cars" : [ 
                    {
                        "active" : true,
                        "carname" : "GM"
                    }
                ],
                "fruits" : [{}],
                "name" : "Andre"
            }
        ],
        "ok" : 1
    }
    


    1. Ubuntu20.04にApacheCouchDBをインストールする方法

    2. MongoDBにファイルをインポートするときに既存のドキュメントを置き換える方法

    3. サーバーがクラッシュした後、MongoDBが起動しない

    4. mongoイメージのビルド中にsystemctlが見つかりません