MongoDB中有条件选择字段



我想从猫鼬中选择例如字段mobileNumberemail,如果用户类型在相同的模式是admin,不要选择他们,如果用户类型是'个人'。所有这些字段都在同一个模式中。那么,我如何在mongoDB中有条件地选择?

下面是我的实现:
const userData = await userProvider.findOne(
{ _id: userId },
'mobileNumber email'
);

其中findOne是将第一个参数作为过滤器,第二个参数作为选择字段的函数

我不知道是否有另一种更简单的方法,但你可以在项目阶段使用$cond来保持admin$$REMOVE的值,就像这样:

db.collection.find(
{ _id: userId },
{
"_id": 0,
"type": 1,
"email": {
"$cond": [
{
"$eq": [
"$type",
"admin"
]
},
"$email",
"$$REMOVE"
]
},
"mobileNumber": {
"$cond": [
{
"$eq": [
"$type",
"admin"
]
},
"$mobileNumber",
"$$REMOVE"
]
}
})

例子

最新更新