如何对对象node.js和mongoose进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何对对象node.js和mongoose进行排序相关的知识,希望对你有一定的参考价值。

我有一个我想要排序的对象数组。根据文档,顶层的.sort()工作原理如下:

Product.findById(productId)
.sort({ somefield: -1 })

我试过这样的事情:

 Product.findById(productId)
 .sort( { requests: { _id: -1 } } )

但是我收到以下错误:

TypeError:无效的排序值:{requests:[object Object]}

如果我在mongodb(罗盘)中按此顺序拥有对象ID

_id:123456789

_id:987654321

我希望_id 987654321在列表中首先显示。

我现在甚至添加了一个日期字段并尝试按顺序排序,但顺序仍然与插入记录的顺序相同。

  Product.findById(productId)
  .sort( { 'requests.requestDt': 1} )
答案

From mongoose doc on sort

如果传递了一个对象,则允许的值为asc,desc,ascending,descending,1和-1。

您传递的值是一个对象{ _id: -1 },它只需要-1(或其他有效值之一)。如果您将密钥更改为要排序的项目的完整路径,那么这应该可以解决您的问题。

Product.findById(productId) .sort( { 'requests._id': -1 } )

如果它不按预期方式工作,你也可以传递一个字符串而不是像这样的对象:Product.findById(productId) .sort('requests._id')Product.findById(productId) .sort('-requests._id')

以上是关于如何对对象node.js和mongoose进行排序的主要内容,如果未能解决你的问题,请参考以下文章

Node js, mongoose 对数据库中的数据进行排序

如何通过 Mongoose 查询对嵌入文档数组进行排序?

如何使用 mongoose 从 mongoDB 中获取一定数量的对象? (Node.js)

如何在 MongoDB 中对聚合查询结果进行分页并获得总文档数(Node.js + Mongoose)?

如何对 mongoose/mongodb 和 nodejs 中的对象数组进行排序?

Node.js / Mongoose / 按顺序排序和显示