MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

agregasi mongoDB kembali kosong

Coba pipa agregasi berikut, itu tidak mengembalikan array kosong untuk elemen yang tidak aktif tetapi lebih dekat dengan hasilnya:

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

Keluaran

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB :Bagaimana cara mengalikan bidang yang hanya muncul di $project?

  2. Hapus Duplikat saat menggunakan $unionWith di MongoDB

  3. kesalahan TS2688:Tidak dapat menemukan file definisi tipe untuk 'bson'

  4. Apakah kerangka Agregasi Mongodb lebih cepat dari peta/kurangi?

  5. MongoDB $arrayToObject