如果查询中有特定条件,我想包括和排除一些字段
// Survey Schema:
new mongoose.Schema({
options: {
type: [mongoose.Schema.Types.String]
},
votes: {
type: [{
user: mongoose.Schema.Types.ObjectId,
option: mongoose.Schema.Types.Number,
}]
},
})
我希望在我的路由处理程序中有这样的
const userID = req.user.id
const isAuth = userID!=undefined
const surveys = await Survey.aggregate([
$project:{
options:1,
votes: {
$cond: {
if: {
$in: [user.id, 'votes']
}
}
}
}
])
结果应该是
如果userID在快照中特定文档的数组votes
中,则字段应为
{options:[], votes:[]},...
其他
{options:[]},...
如果userID
是undefined
,则将votes
设置为0。
let project = {};
if (!userID) {
project.votes = 0;
}
const surveys = await Survey.find({}, project);