node.js中mongodb聚合中的条件如何使用取决于输入

时间:2019-04-19 04:12:20

标签: node.js mongodb aggregate

如何在聚合函数之间添加if条件,假设我有来自请求“ input”的一个参数,如果我有输入,我想查看id大于该id,如果我没有输入,我将不匹配ID,我该如何实现?

collection.aggregate(
        // Pipeline
        [
            // Stage 1 
            {
                $match: {
                    "created_at": {$gte: fromDate, $lt: toDate},
                    "type": {$in : typeArray},
                    if (input){
                       "_id": {$gte: ObjectId("blahblahblah")}
                    }
                }
            },
            {
                $lookup: // Equality Match
                    {
                        from: "users",
                        localField: "some_id",
                        foreignField: "_id",
                        as: "user"
                    }
            },
            {
                $sort: 
                {
                    "_id": 1
                }
            },
            {
                $limit: pageSize
            }
        ])

1 个答案:

答案 0 :(得分:0)

对于IF条件,您可以这样使用

  

{$ cond:{如果:(boolean-expression),则:(true-case),否则:   (假)}}

OR

  

{$ cond:[(boolean-expression),(true-case),(false-case)]

有关参考资料,您可以查看文档

https://docs.mongodb.com/manual/reference/operator/aggregation/cond/