MongoDB:如何重新排序过去混乱的文档字段

MongoDB: How to reorder document Fields that got jumbled in the past

我的数据库中有许多文档的字段顺序大多是随机的,如 Mongo Compass 中所示。第一个字段始终是 _id,但其余字段可以按任何顺序排列。这使得用眼睛扫描记录非常困难。 我已经读到 Mongo 4.2 不再发生由于更新插入而导致的重新排序并且我已经升级 - 但问题仍然存在。 有没有办法让我重新排序我的字段,以便集合中的每个文档都具有相同的字段顺序 - 先说 -id 然后再说 a-z?

您可以尝试使用保留散列键顺序的语言阅读每个文档,按您认为合适的方式重新排序字段,然后写回每个文档。

由于 bson 将映射实现为有序键值对的列表,我希望所有常规工具都能保留每个单独文档当前存在的键的顺序。

您可以使用 $replaceWith 来执行此操作。 https://mongoplayground.net/p/VBzpabZuJpy

db.YOURCOLLECTION.updateMany({}, [
  {$replaceWith: {
    $mergeObjects: [
      {
        "fieldA": "$fieldA",
        "fieldB": "$fieldB",
        "fieldC": "$fieldC",
        "fieldD": "$fieldD",
        "fieldE": "$fieldE"
      },
      "$$ROOT"
    ]
  }}
])