我还没有看到任何提及,但有没有办法处理CouchDB中的关联数组键?:
map: function(doc) { if (...) { emit({ one: doc.one, two: doc.two, ... }); } }
我需要一些相当动态和复杂的查询,这有助于解决这个问题(但我猜这完全破坏了一切)。
答案 0 :(得分:3)
所有键始终仅按一个维度排序。 CouchDB支持关联数组(对象)键。排序顺序是明确定义的,但它基本上是任意的,并且比例如数组更不直观,我们都知道第一个/最左边的元素是最重要的。
此外,不同的编程语言,客户端库和JSON序列化程序可能(并且确实!)更改关联数组中键的顺序。 (通常没关系,因为在 Javascript 中,或者在大多数语言中,关键顺序是未定义的。)
CouchDB collation specification描述了所有有效JSON数据的排序顺序,包括关联数组(对象)。
也许你可以通过将关联数组展平成数组并对键进行排序来模拟关联数组,所有这些都在客户端。
{"foo":"This value is foo", "A":65, "the":"end"}
变为
["A", 65, "foo", "This value is foo", "the", "end"]