sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB NodeJS Devolver subdocumento

Lo que está tratando de hacer sería bastante trivial en su aplicación (es decir, el código JS después de findOne ), pero si realmente desea hacerlo en mongodb, deberá usar la agregación. Cambia tu código a:

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

Aquí está la consulta de agregación real con la que puede jugar:https://mongoplayground.net/p/ o-xTTa8R42w