如何对对象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进行排序的主要内容,如果未能解决你的问题,请参考以下文章