node.js - 使用聚合 MongoDB

标签 node.js mongodb aggregate mongo-shell

我正在尝试将 .aggregate() 与其他 mongo shell 方法一起使用,我得到了 UnhandledPromiseRejectionWarning:TypeError:User.find(...).select(...).sort(...).aggregate 不是函数

const users = await User
            .find(findParams)
            .select(userResponse)
            .sort(sortParams)
            .aggregate(([
                {
                    $project:{
                        dateCreated: {$dateToString: {format: "%G-%m-%d %H:%M:%S", date: "$dateCreated"}},
                    }
                }
            ]))
            .exec()

但是,当我使用 .aggregate() 而不使用其他方法时,它效果完美。

const users = await User
            .aggregate(([
                {
                    $project:{
                        dateCreated: {$dateToString: {format: "%G-%m-%d %H:%M:%S", date: "$dateCreated"}},
                    }
                }
            ]))
            .exec()

我可以用其他方法插入它,但不会出现此错误。 谢谢

最佳答案

在第一段代码中,您尝试对 find() 方法返回的游标应用 db.collection.aggregate() 方法。游标基本上是从 find()、aggregate() 和 more here 等集合方法返回的。 .

在第二个代码块中,您直接在User集合上应用aggregate()。这就是它起作用的原因。是的,即使不使用这些游标方法,您也可以使用aggregate() 执行任何选择、排序、限制 here 。希望这会有所帮助,伙计。祝你有美好的一天!

MongoDB documentation page screenshot

关于node.js - 使用聚合 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63575756/

相关文章:

Python - 按月汇总并计算平均值

python - 使用字典进行数据帧聚合

javascript - 找不到名称 'console' 。这可能是什么原因?

javascript - Mongo/mongoose $facet 过滤器,如果客户应用过滤器,则返回所有产品的品牌/标签作为响应

javascript - 将异步加载的数据传递给 webpack 中的 pug-html-loader

node.js - MongoDB 连接在 connection.close() 之后并不总是关闭

mongodb - 在 mongodb 中使用 $not

mongodb - 使用mongoDB汇总不同 “columns”中特定字段的列表

javascript - 请求错误: must declare scalar variable in complex MSSQL query

mysql - SQL 聚合函数 MAX/MIN/AVG/COUNT 的子查询等价物是什么