Javascript MongoDB支持映射对象吗?

Javascript MongoDB支持映射对象吗?,javascript,node.js,mongodb,dictionary,Javascript,Node.js,Mongodb,Dictionary,假设我在node.js应用程序中有一个有序项的映射: var myMap = new Map(); myMap.set("a", "b"); myMap.set("c", "d"); myMap.set("e", "f"); 然后,我使用MongoDB node.js驱动程序将此地图存储在数据库中: collection.insertOne({myMap: myMap}); 存储的地图如下所示: { "myMap" : { "a" : "b", "c" : "d", "e" : "f" }

假设我在node.js应用程序中有一个有序项的映射:

var myMap = new Map();
myMap.set("a", "b");
myMap.set("c", "d");
myMap.set("e", "f");
然后,我使用MongoDB node.js驱动程序将此地图存储在数据库中:

collection.insertOne({myMap: myMap});
存储的地图如下所示:

{ "myMap" : { "a" : "b", "c" : "d", "e" : "f" } }
我知道地图的顺序是有保证的,但它是否保证以这种顺序存储在MongoDB中?是否保证从MongoDB以这种顺序读取


这是一个非常简单的问题,但我在MongoDB文档中找不到任何关于It支持地图的信息。

首先澄清一下。尽管JavaScript规范没有说对象“必须”保留键的顺序,但实际上几乎每个实现都在标准对象上保持键的顺序

至于MongoDB文档,从技术上讲,它没有被记录在那里,因为实际的订单保留是一个BSON规范,其中键的顺序是有保证的。BSON实际上并不局限于MongoDB

至于实际问题,让我们从所使用的内部函数中查看来自的代码:


}否则如果(object instanceof Map){//“虽然JavaScript规范没有说对象“必须”保留键的顺序”——但它确实有点@zerkms,这并不是这里的重点。这只是人们“感知”的方式规范,以及
Map
Object
之间的区别。有点含糊不清,但这里真正的内容是BSON治疗。我确实注意到
Map
文档故意没有这样的区别。我同意你的回答(目前唯一的投票是我的),我的观点是,在技术上说规范没有内容是不正确的。@zerkms和我不是在争论。但我很现实,有9/10的人(或者至少是那些找到这个主题的人)可能已经看过或将要看过,而大多数人可能会跳出来总结“我会使用地图!”因此,虽然最近的文献可能在解释上有所不同,但历史性的信息已经在那里了。此外,我们告诉人们“无论如何,这只是命令”,以及当“命令”至关重要时,应该做的最终事情。
  } else if(object instanceof Map) {    //<-- Actually looks for the type and handles it
    var iterator = object.entries();
    var done = false;

    while(!done) {