Node.Js仅在变量存在时才聚合$ match

编程入门 行业动态 更新时间:2024-10-05 09:32:45

Node.Js仅在变量存在<a href=https://www.elefans.com/category/jswz/34/1639646.html style=时才聚合$ match"/>

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 () {}

更多推荐

Node.Js仅在变量存在时才聚合$ match

本文发布于:2024-05-07 11:42:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1756084.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:时才   变量   Node   Js   match

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!