Javascript MongoDB支持映射对象吗?
假设我在node.js应用程序中有一个有序项的映射: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" }
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) {