Những gì bạn đang cố gắng làm sẽ khá tầm thường trong ứng dụng của bạn (tức là mã JS sau findOne
), nhưng nếu bạn thực sự muốn làm điều đó trong mongodb, thì bạn sẽ cần sử dụng tính năng tổng hợp. Thay đổi mã của bạn thành:
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')
}
Đây là truy vấn tổng hợp thực tế mà bạn có thể sử dụng: https://mongoplayground.net/p/ o-xTTa8R42w