我的数据库中有这个集合,我想按照以下条件过滤文档:对于第一阶段后过滤的文档,我想检查 custom === true 我想添加过滤器:day === 'MONDAY' 和 startTime === 13:00 对于自定义 === false 的文档,我不想添加过滤器,我可以在查询中将它们与通过自定义过滤器的文档一起返回。收藏:
代码:
return await this.campaignModel.aggregate([
{
$match: {
status: 'PENDING_START_DATE',
startDate: { $lte: '2021-07-26' },
endDate: { $gte: '2021-07-26' },
},
},
// add filter to documents that custom === true
]);
您可以使用$or
具有不同查询的阶段,如下所示:
db.collection.aggregate([
{
$match: {
"$or": [
{
status: "PENDING_START_DATE",
startDate: {
$lte: 1
},
endDate: {
$gte: 2
},
custom: true,
day: "MONDAY",
startTime: "13:00"
},
{
status: "PENDING_START_DATE",
startDate: {
$lte: 1
},
endDate: {
$gte: 2
},
custom: false
}
]
},
}
])
使用此查询,如果custom:true
它将添加值day
并startTime
匹配,则不会添加。
示例在这里
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句