UnhandledPromiseRejectionWarning:.aggregate不是函数

问题描述

我正在尝试使用此管道执行 .aggregate()函数,但出现此错误

UnhandledPromiseRejectionWarning: TypeError: User.find(...).select(...).sort(...).aggregate is not a function
const users = await User
            .find(findParams)
            .select(userResponse)
            .sort(sortParams)
            .aggregate([
                {$group: {_id: "$_id",dateCreated: {$first: "$dateCreated"}}},{$set: {dateCreated: {$datetoString: {format: "%d.%m.%G %H:%M:%s",date: "$dateCreated"}}}}
            ])
            .exec()

users是我从MongoDB收集的。我是否需要更多管道来拒绝该错误?谢谢

解决方法

.find()返回一个游标,您无法在其上调用.aggregate()。您需要将聚合管道直接传递到.aggregate()

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

你好,我的朋友aggregate()方法仅用于如下所示的模式

const users = await User
        .aggregate([
            {$group: {_id: "$_id",date: "$dateCreated"}}}}
        ])
        .exec()

紧跟着这个doc,您会更好地了解aggregate()方法