admin管理员组文章数量:814981
Node.Js仅在变量存在时才聚合$ match
在我的数据库中,我有以下类型的数据:
{
"_id": "xxx",
"amount": 800,
"title": "teste",
"date": "2020-05-13T18:35:20.000Z",
"paid": true,
"type": "expense",
"category": "debts_loans",
"__v": 0
}
我有以下代码,用于从mongoDB数据库聚合数据。
const { initialDate, finalDate, paid = null } = req.query;
try {
const transactions = await Transaction.aggregate([
{
$match: {
date: {
$gte: new Date(initialDate),
$lte: new Date(finalDate),
},
},
}, ...
在$match
聚合中,我只想在paid
存在的情况下对其进行聚合,否则,我只想按date
进行聚合。我怎样才能做到这一点? url参数paid
是可选的(可能为true或不存在),是反模式吗?
回答如下:
在这种情况下,您需要根据paid
切换查询,如下所示:
const { initialDate, finalDate, paid } = req.query; // No need to make it null if it's not there in req.
let pipeline = [];
paid == undefined ?
pipeline.push({ $match: { date: { $gte: new Date(initialDate), $lte: new Date(finalDate) } } }) :
pipeline.push({ $match: { paid: paid } })
try {
const transactions = await Transaction.aggregate(pipeline)
} catch () {}
本文标签: NodeJs仅在变量存在时才聚合 match
版权声明:本文标题:Node.Js仅在变量存在时才聚合$ match 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1715177762a821995.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论