在 mongoose-aggregate-paginate-v2 中排序

Posted

技术标签:

【中文标题】在 mongoose-aggregate-paginate-v2 中排序【英文标题】:Sort in mongoose-aggregate-paginate-v2 【发布时间】:2020-11-29 20:21:37 【问题描述】:

我正在使用 mongoose-aggregate-paginate-v2

排序不起作用

var aggregate = searchmodel.aggregate()
aggregate.match( word:  $regex: `.*$word.*`  )
  .group(
    _id: '$user_id', doc:  $first: '$$ROOT' 
  )
var options = 
  page: page, limit: 50, sort:  createdAt: -1 

searchmodel.aggregatePaginate(aggregate, options).then(function (results) 
  return res.json(results)
).catch(function (err) 
  console.log(err);
)

我尝试了很多排序方法,但它根本不起作用

【问题讨论】:

【参考方案1】:

你应该写,

var aggregate = searchmodel.aggregate()
aggregate.match( word:  $regex: `.*$word.*`  )
  .group(
    _id: '$user_id', doc:  $first: '$$ROOT' 
  )
var options = 
  page: page, limit: 50, sort:  createdAt: 'desc' 

searchmodel.aggregatePaginate(aggregate, options).then(function (results) 
  return res.json(results)
).catch(function (err) 
  console.log(err);
)

【讨论】:

【参考方案2】:

其实我找到了解决问题的办法。 您需要将 _id 添加到排序对象。

例子:

  const options = 
    page: page,
    limit: limit,
    sort:  _id: 1, createdAt: -1 ,
  ;

它有效。

【讨论】:

以上是关于在 mongoose-aggregate-paginate-v2 中排序的主要内容,如果未能解决你的问题,请参考以下文章

秋的潇洒在啥?在啥在啥?

上传的数据在云端的怎么查看,保存在啥位置?

在 React 应用程序中在哪里转换数据 - 在 Express 中还是在前端使用 React?

存储在 plist 中的数据在模拟器中有效,但在设备中无效

如何在保存在 Mongoose (ExpressJS) 之前在模型中格式化数据

如何在保存在 Mongoose (ExpressJS) 之前在模型中格式化数据