MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Agregacja mongoDB zwraca puste

Wypróbuj następujący potok agregacji, który nie zwraca pustej tablicy dla nieaktywnych elementów, ale jest bliższy wynikowi:

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

Wyjście

/* 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. Analizowanie powolnych zapytań w MongoDB

  2. MongoDB Ruby Driver 2.5.x Problemy z rozróżnianiem wielkości liter w nazwach hostów w zestawach replik

  3. Mongo / Mongoose Aggregation - Problemy z $redact i $cond

  4. mongoDB :zmiana nazwy kolumny w kolekcji

  5. Mongodb agregacja liczby tablicy/rozmiar zestawu