首页 > 解决方案 > mongoose 中的聚合管道运算符

问题描述

如何在 nodejs 中使用 Mongoose 使用 MongoDB 聚合管道运算符

我正在尝试使用聚合来计算日期数据

                  Walkins.aggregate([
                        {
                            $match:{'subscriberId': subsc._id},
                        },{
                            $project:{'date':{ $convert: { input:'$created', to: "date"} },
                        } },{
                            $project:{ 'dates': { $dateToString : { format: "%Y-%m-%d", date: "$created" } }} ,
                        },{
                            $group:{
                                _id:{'date': '$created'} ,
                                walkinsCount :{$sum: 1 }
                            }
                        }

                    ]).then((walkins)=>{    });

但它正在经历“MongoError:无法识别的表达式'$convert'”错误

                  Walkins.aggregate([
                        {
                            $match:{'subscriberId': subsc._id},
                        },{
                            $project:{'date':{ $toDate:'$created'} },
                        } },{
                            $project:{ 'dates': { $dateToString : { format: "%Y-%m-%d", date: "$created" } }} ,
                        },{
                            $group:{
                                _id:{'date': '$created'} ,
                                walkinsCount :{$sum: 1 }
                            }
                        }

                    ]).then((walkins)=>{    });

标签: node.jsmongodbmongoose

解决方案


$toDate仅在版本4.0及以上版本中可用。在这里,您可以看到它已编写New in version 4.0.,这意味着您不能将它与低于 version 的任何 MongoDB 安装一起使用4.0

如果您使用的是 Ubuntu 并使用 安装 MongoDB apt install mongodb,它会安装 version 3.6.3

在此处查看有关如何为您的操作系统安装和运行最新版本的官方文档。


推荐阅读