sql >> Databáze >  >> NoSQL >> MongoDB

$match ve výsledku $lookup

S MongoDB 3.4 můžete spustit agregační kanál, který používá $addFields potrubí a $filter operátor vrátí pouze Company pole s prvky, které odpovídají dané podmínce. Poté můžete zabalit $filter výraz s $arrayElemAt operátor vrátit jeden dokument, který v podstatě obsahuje $unwind funkčnosti zploštěním pole.

Chcete-li pochopit výše uvedený koncept, postupujte podle tohoto příkladu:

db.users.aggregate([
    { "$match": { "UserName": "administrator" } },
    { 
        "$lookup": { 
            "from": 'companies', 
            "localField": 'CompanyID', 
            "foreignField": 'CompanyID', 
            "as": 'Company' 
        } 
    },
    {
        "$addFields": {
            "Company": {
                "$arrayElemAt": [
                    {
                        "$filter": {
                            "input": "$Company",
                            "as": "comp",
                            "cond": {
                                "$eq": [ "$$comp.CompanyName", "edt5" ]
                            }
                        }
                    }, 0
                ]
            }
        }
    }
])


  1. MongoDB ::jsou Mongo ID jedinečná napříč sbírkami?

  2. Připojte data k existujícímu souboru gridfs

  3. Ubuntu 16.04 systemd redis problémy s ulimit

  4. Jak propojit web Laravel s atlasem mongoDB