使用mongoose在mongodb中按升序和降序对多个字段进行排序

Posted

技术标签:

【中文标题】使用mongoose在mongodb中按升序和降序对多个字段进行排序【英文标题】:Sorting multiple fields in Ascending and Descending order in mongodb with mongoose 【发布时间】:2021-11-01 20:42:04 【问题描述】:

我有一些来自 mongodb 的字段,我试图按 asc 或 desc 顺序排序,但是在进行查询后得到的返回值相当不一致。我已经浏览了文档并尝试根据文档中的方式调整我的方法。

我试过了

  sort("email": -1,
    "dob": -1,
    "website": -1,
    "lastName": -1,
    "firstName": -1,) 

这个sort("-firstName, -lastName , -email , -dob , -website") 用于降序,但它只适用于一个字段。例如 lastName 并为其余部分返回不一致的数据。

这与尝试按升序排序时的行为完全相同。

我做错了什么?

【问题讨论】:

你能提供一个例子和结果吗? 我已经在帖子中做了。运行突出显示的排序查询仅对 1 个字段返回 true。只有 lastName 字段被正确排序 【参考方案1】:

根据 mongo 官方文档,您需要在排序中添加一个包含唯一唯一值的字段。

https://docs.mongodb.com/manual/reference/operator/aggregation/sort/

不要忘记添加所需的索引以避免性能问题。

【讨论】:

嗨。 sort(email: -1) 是否算作一个字段。如果是的话,我已经这样做了。如果我添加多个字段,它只会解析第一个。 在您的收藏中,邮件是否具有独特价值?你能分享一个你在你的数据库中拥有的文档的例子吗? firstName: type: String, required: [true, "请输入有效的名字。"], , lastName: type: String, required: [true, "请输入有效的last name."], , email: type: String, required: [true, "请提供有效的电子邮件地址。"], , 这是我的架构的一部分 我猜你用的是猫鼬?如果是这样,我看不到您为您的任何字段添加了独特的属性。我错过了什么吗? 哦,我需要为每个字段添加唯一属性吗?让我马上试试

以上是关于使用mongoose在mongodb中按升序和降序对多个字段进行排序的主要内容,如果未能解决你的问题,请参考以下文章

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

字符串String 升序和降序 Vue检测数据的原理

如何使用 mongoose 获取最近添加的文档?

React JS 按升序和降序排序

在升序和降序之间切换对列进行排序

XQuery 按升序和降序排列