如何对对象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} )
如果传递了一个对象,则允许的值为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 从 mongoDB 中获取一定数量的对象? (Node.js)
如何在 MongoDB 中对聚合查询结果进行分页并获得总文档数(Node.js + Mongoose)?