MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Subdocumento de retorno do MongoDB NodeJS


O que você está tentando fazer seria bastante trivial em seu aplicativo (ou seja, código JS após findOne ), mas se você realmente quiser fazer isso no mongodb, precisará usar agregação. Altere seu código para:
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')
}

Aqui está a consulta de agregação real para você brincar:https://mongoplayground.net/p/ o-xTTa8R42w