问题描述
我正在尝试使用此管道执行 .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()方法