首页 > 解决方案 > 寻找一种在 MongoDB 中按键对数据进行排序的方法

问题描述

我试图使用 GET 请求从 MongoDB 获取数据,但是每次刷新 URL 时数据的顺序都会改变。我$sort在MongoDB中使用了该方法,但顺序仍然改变。

let apiURL_1 = await axios.get('http://localhost:3000/Mydata');

我的数据:

[{"Bread":6},{"Fruit":6},{"Cholate":4}]

使用$sortMongoDB 的聚合或执行一些 javascript 对数据进行排序的预期输出(字母顺序)。

[{"Bread":6}, {"Cholate":4}, {"Fruit":6}]

标签: javascriptmongodbsortingaggregation-framework

解决方案


您可以使用此聚合查询:

  • 首先创建一个名为rootusing$objectToArray
  • 然后,键位于名为 的字段中k,因此您可以按该字段排序。
  • 最后删除之前创建的辅助字段。
db.collection.aggregate([
  {
    "$set": {
      "root": {
        "$objectToArray": "$$ROOT"
      }
    }
  },
  {
    "$sort": {
      "root.k": 1
    }
  },
  {
    "$project": {
      "root": 0
    }
  }
])

这里的例子


推荐阅读