sql >> Database >  >> NoSQL >> MongoDB

MongoDB NodeJS Subdocument retourneren

Wat u probeert te doen, zou vrij triviaal zijn in uw app (d.w.z. JS-code na findOne ), maar als je het echt in mongodb wilt doen, moet je aggregatie gebruiken. Verander je code in:

const username = req.body.User.Username;
const user = await Account.aggregate([
    {
        $match: {
            "Users.Username": username
        }
    },
    {
        "$project": {
            _id: false,
            USER: {
                $filter: {
                    input: "$Users",
                    as: "users",
                    cond: {
                        $eq: [
                            "$$users.Username",
                            username
                        ]
                    }
                }
            }
        }
    },
    {
        "$unwind": "$USER"
    },
    {
        "$project": {
            USER_PIN: "$USER.PIN"
        }
    }
]);

if(user.length){
    console.log(user[0].USER_PIN)
}else{
    console.log('Username not found')
}

Hier is de feitelijke aggregatiequery waarmee u kunt spelen:https://mongoplayground.net/p/ o-xTTa8R42w




  1. Hoe BSON naar JSON te converteren met een door mensen leesbaar datumformaat

  2. Hoe TypeError op te lossen:unhashable type 'lijst'

  3. Hoe kan ik in ReactiveMongo 0.18.8 een update uitvoeren van meerdere documenten, met verschillende waarden, in een enkele opdracht?

  4. MongoDB vind waar sleutel gelijk is aan string uit array