如何在使用猫鼬的查找查询中使用排序

Posted

技术标签:

【中文标题】如何在使用猫鼬的查找查询中使用排序【英文标题】:How to use sort in find query using mongoose 【发布时间】:2021-09-11 02:21:55 【问题描述】:
With this_set AS (
    SELECT * FROM users
    WHERE last_name < ‘Diggory’ 
    ORDER BY last_name 
    DESC LIMIT 5
)
SELECT * FROM this_set ORDER BY last_name ASC

我想在猫鼬中达到同样的效果.. 我试过了

 records = await model
.find(...filter, deleted:null )
.select('-deleted -__v')
.where(paginationParams) // last_name < 'Diggory'  here i want to apply sort last_name by desc like last_name : -1
.sort(last_name : 1) // asc order
.limit(pageLimit + 1)
.exec()

参考网址:https://medium.com/swlh/how-to-implement-cursor-pagination-like-a-pro-513140b65f32

在这里,我正在尝试使用下一个和上一个 ulr 在猫鼬中实现基于光标的分页

【问题讨论】:

【参考方案1】:

对于猫鼬的分页,喜欢这样:

let page = req.query.page ? parseInt(req.query.page) : 1;
let limit = req.query.limit ? parseInt(req.query.limit) : 5;

  try 
    const collection= await Collection.find(
     filters 
  )
    .skip(limit * page - limit)
    .sort([["createdAt", "desc"]])
    .limit(limit)
    .exec();
    if (!collection) 
      return res.status(400).json( error: 'None...' );
    
    res.json(
      collection,
      current: page,
      pages: Math.ceil(count / limit),
      count,
  );
   catch (error) 
    return res.status(500).json( error: "Server error" );
  

【讨论】:

这使用了跳过和限制..但我在这里尝试实现基于光标的分页

以上是关于如何在使用猫鼬的查找查询中使用排序的主要内容,如果未能解决你的问题,请参考以下文章

如何在猫鼬的数组中使用不同类型的模式?

根据打字稿中的请求参数设置猫鼬的查询过滤器

如何在猫鼬的路由器中等待函数完成其所有内部表达式?

如何在猫鼬的 document.save() 回调中隐藏字段?

从猫鼬的多个集合中获取数据?

如何在猫鼬的嵌入式文档中填充字段?