MongoDB $ sort聚合的Javascript属性顺序

时间:2015-11-12 01:21:05

标签: javascript mongodb

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

但是,聚合管道specifies documents will be sorted in the order the properties are listed on the $sort property中的MongoDB def get_hyponyms(synset): hyponyms = set() for hyponym in synset.hyponyms(): hyponyms |= set(get_hyponyms(hyponym)) return hyponyms | set(synset.hyponyms()) 运算符。

$sort
  

此操作对用户集合中的文档进行排序   根据年龄字段降序然后升序   根据posts字段中的值进行排序。

MongoDB对javascript对象有不同的定义,因为很明显MongoDB依赖于属性顺序吗?

1 个答案:

答案 0 :(得分:2)

  

MongoDB对javascript对象有不同的定义,因为很明显MongoDB依赖于属性顺序吗?

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

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

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

现代JavaScript引擎确实倾向于维护隐式排序(对象中字段的插入顺序),但是当需要显式保证时,可以使用诸如Map之类的对象。在SON shell的特定示例中,集成JavaScript引擎的行为应该是保持顺序的。