mongodb - 按字段/键名称对 MongoDB 文档进行排序

标签 mongodb mongodb-query aggregation-framework robo3t

我正在使用 Robo 3T 查看我的 MongoDB 文档,并且我想按名称对文档中的键进行排序。

我的文档可能看起来像 {"Y":3,"X":"示例","A":{"complex_obj":{}} 最后,我希望返回的文档看起来像我运行查找查询并对它应用排序时一样。 {"A":{"complex_obj":{},"X":"示例","Y":3}

有没有办法对文档返回的键/字段进行排序?我看到的所有示例都是根据字段的值而不是键的名称应用排序。

最佳答案

不确定为什么字段顺序在 JSON 文档中很重要,但您可以在下面尝试 aggregation查询:

db.collection.aggregate([
    {
      $project: { data: { $objectToArray: "$$ROOT" } }
    },
    {
      $unwind: "$data"
    },
    {
      $sort: { "data.k": 1 }
    },
    {
      $group: { _id: "_id", data: { $push: "$$ROOT.data" } }
    },
    {
      $replaceRoot: { newRoot: { $arrayToObject: "$data" } }
    },
    {
      $project: { _id: 0 }
    }
   ])

测试: mongoplayground

关于mongodb - 按字段/键名称对 MongoDB 文档进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61944681/

相关文章:

c# - mongodb linq 提供程序 : incorrect behavior for fields of type decimal?

javascript - 聚集累积内部对象

java - 与 mongo db 不同的值?

mongodb - 如何在 mongodb 中使用 facet 操作查找字段的不同值

javascript - MeteorJS : why takes so long in foreach? 我应该使用 MongoDB 聚合操作,如何?

javascript - 插入很多在 mongoDB 中不起作用为什么?

mongodb - 显示 dbs 给出 "Not Authorized to execute command"错误

mongodb - 在文档中移动 mongo 字段(如果存在)

ruby-on-rails - 如何使用 Mongoid 和 Rails 对结果进行分组?

mongodb - 是否可以将展开的数组的一个字段连接到展开的数组上?