在尝试解决这个问题一整天后,我在问这个问题。我想得到我的用户userId
地址addressId
。由于我从发布请求中接收数据,因此我需要确保查询包含两者userId
,addressId
以避免安全问题。下面的查询结果返回我用户的所有地址,而不仅仅是包含正确addressId
.
async getUserAddress(_id: string, addressId: string) {
const user = await this.userModel.findOne(
{
_id,
addresses: {
$elemMatch: {
addressId: Types.ObjectId(addressId)
}
}
}
)
if (!user) {
throw new NotFoundException();
}
return user.addresses[0];
}
由于不可能$elemMatch
在不同的文档级别使用,甚至无法在查询的顶层使用,我找不到更好的方法来进行此查询而不使用过滤器。有什么见解吗?
提前谢谢