javascript - 寻找一种在 MongoDB 中按键对数据进行排序的方法
问题描述
我试图使用 GET 请求从 MongoDB 获取数据,但是每次刷新 URL 时数据的顺序都会改变。我$sort
在MongoDB中使用了该方法,但顺序仍然改变。
let apiURL_1 = await axios.get('http://localhost:3000/Mydata');
我的数据:
[{"Bread":6},{"Fruit":6},{"Cholate":4}]
使用$sort
MongoDB 的聚合或执行一些 javascript 对数据进行排序的预期输出(字母顺序)。
[{"Bread":6}, {"Cholate":4}, {"Fruit":6}]
解决方案
您可以使用此聚合查询:
- 首先创建一个名为
root
using$objectToArray
- 然后,键位于名为 的字段中
k
,因此您可以按该字段排序。 - 最后删除之前创建的辅助字段。
db.collection.aggregate([
{
"$set": {
"root": {
"$objectToArray": "$$ROOT"
}
}
},
{
"$sort": {
"root.k": 1
}
},
{
"$project": {
"root": 0
}
}
])
这里的例子
推荐阅读
- php - 使用一个键注册多个对象是最佳实践吗?
- ios - Swift:是否有更快、更灵敏的方式来为 UIView 实现不同的角半径?
- java - 卡车中最大单位的贪婪方法
- c - 加入气泡的算法
- mysql - MYSQL,这不断弹出错误 SQL 查询:MySQL 说:文档 #1054 - '字段列表'中的未知列 'id_D10'
- android-studio - 由于“getDay()”已被弃用,如何从 Date 对象中获取日期?
- flutter - 如何处理 google_sign_in on flutter for error NoSuchMethodError: The getter 'authentication' was called on null?
- python - 使用 matlib.plot 绘制二维图形
- python - 用于 ML 项目的 MacBook 桌面中文件的路径名问题
- firebase - Firebase:使用 FieldValue.increment(1) 为嵌套属性增加整数不起作用