如何解决如果输入存在,则 MongoDB 匹配聚合
$match: {
date: { $gte: fromDate,$lte: toDate },if (userId) {
user: userId
}
},
我仅在提交了 userId
时才尝试匹配用户。这样做的最佳方法是什么。
解决方法
您可以使用 mongoose query builder,根据您的条件管理聚合阶段,
// INITIALIZE
let p = YourSchemaModel.aggregate();
// DATE FILTER
p.match({ date: { $gte: fromDate,$lte: toDate } });
// USER ID FILTER
if (userId) p.match({ user: userId });
// RESULT
let result = await p.exec();
如果两者在一起,聚合将自动合并 $match
个阶段!
第二个选项:
let result = await YourSchemaModel.aggregate().match(
Object.assign(
{ date: { $gte: fromDate,$lte: toDate } },userId ? { user: userId } : {}
)
).exec();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。