使用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中按升序和降序对多个字段进行排序的主要内容,如果未能解决你的问题,请参考以下文章