最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

网站源码admin23浏览0评论

Node.Js仅在变量存在时才聚合$ 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 () {}
发布评论

评论列表(0)

  1. 暂无评论