sql >> Database >  >> NoSQL >> MongoDB

$match in $lookup-resultaat

Met MongoDB 3.4 kunt u een aggregatiepijplijn uitvoeren die gebruikmaakt van de $addFields pijplijn en een $filter operator om alleen het Company te retourneren array met elementen die overeenkomen met de gegeven voorwaarde. U kunt dan de $filter expressie met de $arrayElemAt operator om een ​​enkel document te retourneren dat in wezen de $unwind functionaliteit door de array af te vlakken.

Volg dit voorbeeld om het bovenstaande concept te begrijpen:

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. waarom krijg ik favicon.ico als ik de findOne-methode gebruik voor express params-routes?

  2. Deserialisering van de interface in MongoDB met behulp van C# - Onbekende discriminatorwaarde

  3. Waarom wordt MongoDB niet bijgewerkt tenzij ik .then res.json(...) bel na findOneAndUpdate?

  4. Mongodb C# driver update alle subarray-elementen mislukt wanneer array leeg is