Node.js Mongoose模式字段在MongoDB中顺序相反

Node.js Mongoose模式字段在MongoDB中顺序相反,node.js,mongodb,mongoose,robo3t,Node.js,Mongodb,Mongoose,Robo3t,只是想知道为什么在MongoDB GUI中查看字段时,字段会比Mongoose中模式的定义向后看 以下是模式: 以下是插入函数: 以下是我在机器人世界里看到的: 我的问题是,与我在模式中定义字段的方式相比,为什么字段会向后排序?两件事: 在Javascript中处理对象时,不会像使用数组(或Map/Set/TypedArray等)那样获得有保证的访问顺序或持久化顺序。所以,当您在Mongoose中将配置对象作为模式传递时,我猜它不会将其转换为某种有序数组,并且可能会保持其对象形式。为了准

只是想知道为什么在MongoDB GUI中查看字段时,字段会比Mongoose中模式的定义向后看

以下是模式:

以下是插入函数:

以下是我在机器人世界里看到的:

我的问题是,与我在模式中定义字段的方式相比,为什么字段会向后排序?

两件事:

  • 在Javascript中处理对象时,不会像使用数组(或Map/Set/TypedArray等)那样获得有保证的访问顺序或持久化顺序。所以,当您在Mongoose中将配置对象作为模式传递时,我猜它不会将其转换为某种有序数组,并且可能会保持其对象形式。为了准确地追踪它是如何进行的,您需要查看源代码,然后是mongodb驱动程序模块,然后(如果答案仍然不存在)可能会查看mongodb如何存储东西以及它在内部使用什么样的数据结构。我猜订单并不能保证:)

  • RoboMongo是一个GUI,因此它显示数据的方式不一定与mongodb保存的数据顺序相同——很可能是为了便于阅读而对其进行了排序


这有帮助吗?

文档中还有一个(简短的)东西(搜索“字段顺序”):MongoDB尝试保留写入顺序,不再保留。非常感谢您的详细解释。