Javascript CouchDB键中的关联数组?

Javascript CouchDB键中的关联数组?,javascript,couchdb,Javascript,Couchdb,我没有看到任何关于这方面的提及,但是有没有办法处理CouchDB中的关联数组键 map: function(doc) { if (...) { emit({ one: doc.one, two: doc.two, ... }); } } 我需要一些相当动态和复杂的查询,这将有助于解决这个问题(但我猜这完全破坏了一切)。所有键始终仅沿一个维度排序。CouchDB支持关联数组(对象)键。排序顺序是定义良好的,但是它基本上是任意的,并且比数组直观得多,例如,在数组中,我们都知道第一个/最左边的元素最

我没有看到任何关于这方面的提及,但是有没有办法处理CouchDB中的关联数组键

map: function(doc) { if (...) { emit({ one: doc.one, two: doc.two, ... }); } }

我需要一些相当动态和复杂的查询,这将有助于解决这个问题(但我猜这完全破坏了一切)。

所有键始终仅沿一个维度排序。CouchDB支持关联数组(对象)键。排序顺序是定义良好的,但是它基本上是任意的,并且比数组直观得多,例如,在数组中,我们都知道第一个/最左边的元素最重要

此外,不同的编程语言、客户端库和JSON序列化程序可能(而且确实!)更改关联数组中键的顺序。(通常这并不重要,因为在Javascript中,或者在大多数语言中,键顺序是未定义的。)

描述所有有效JSON数据的排序顺序,包括关联数组(对象)

也许您可以通过将关联数组展平为一个数组并对键进行排序来模拟关联数组,所有这些都在客户端进行

{"foo":"This value is foo", "A":65, "the":"end"}
变成

["A", 65, "foo", "This value is foo", "the", "end"]

CouchDB视图索引仅在涉及复杂键时支持数组。请描述更多您试图解决的问题,我敢打赌有一个很好的解决方案。来自许多供应商的数据,需要逻辑来查找现有的CouchDB记录以附加任意数据。这是一个非常普遍的问题——我只需要通过自动生成的视图来解决它,或者搬到Mongo,我猜我已经读过这个规范来真正理解你的观点:你可以使用一个“DICT”作为文档键,但是在DICT中的键的顺序是很重要的。(我想对于复杂的对象是递归的)。这确实会产生问题!(也许你可以对键进行排序,而不是完全“展平”)非常有趣--实际上我根本不知道可以使用dict--实际上有人这样做吗?你能解决这个问题吗?实际上,数组键更常见。大多数应用程序根本不使用对象键。