gpt4 book ai didi

MongoDB $sort 聚合的 Javascript 属性顺序

转载 作者:行者123 更新时间:2023-11-30 16:28:50 25 4
gpt4 key购买 nike

ECMAScript 将 JavaScript 对象定义为无序的属性集合

但是,聚合管道中的 MongoDB $sort 运算符 specifies documents will be sorted in the order the properties are listed on the $sort property .

db.users.aggregate(
[{ $sort : { age : -1, posts: 1 } }]
);

This operation sorts the documents in the users collection, in descending order according by the age field and then in ascending order according to the value in the posts field.

MongoDB 是否对 javascript 对象有不同的定义,因为显然 MongoDB 取决于属性顺序?

最佳答案

Does MongoDB have a different definition for javascript objects since apparently MongoDB depends on property order?

MongoDB 的服务器端文档表示是一种类似于 JSON 的二进制格式,称为 BSON ,它具有比 JavaScript/JSON 更丰富的类型并保留字段顺序。 MongoDB 使用 BSON Comparison/Sort Order 对服务器端查询(例如 find().sort() 或聚合的 $sort 阶段)进行排序.

当您通过 mongo shell 或驱动程序与 MongoDB 交互时,与 MongoDB 服务器的通信使用 MongoDB Wire Protocol消息封装在 BSON 中。驱动程序和应用程序作者有责任确保对象表示在需要时使用保留顺序的数据结构。这通常是一个有序的哈希/映射/字典,具体取决于语言实现和通用术语。

您应该查看您的驱动程序文档以获取任何具体建议。例如,PyMongo(官方 Python 驱动程序)提供了标准 Python dictSON 子类,它维护键的顺序并提供一些额外的帮助程序来将 Python 类型映射到 BSON。

现代 JavaScript 引擎确实倾向于维护隐式排序(对象中字段的插入顺序),但是有一些对象,例如 Map可以在需要明确保证时使用。在 mongo shell 的具体示例中,集成 JavaScript 引擎的行为预计会保持顺序。

关于MongoDB $sort 聚合的 Javascript 属性顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33662891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com