MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB NodeJS Restituisce il documento secondario

Quello che stai cercando di fare sarebbe piuttosto banale nella tua app (ad es. codice JS dopo findOne ), ma se vuoi davvero farlo in mongodb, dovrai usare l'aggregazione. Modifica il tuo codice 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')
}

Ecco la query di aggregazione effettiva con cui puoi giocare:https://mongoplayground.net/p/ o-xTTa8R42w