我正在使用Cloudant,它只是具有更多功能的CouchDB,我正在寻找计算数组中元素数量的语法。具体来说,我正在创建一个设计文档,如果其字段'color'具有多于0个元素,我只会索引该文档。如何检查“颜色”中是否有超过0个元素?
{"_id": "_design/geodd",
"_rev": "5-2729b1453b11f81261ddb3cf3f3de72f",
"st_indexes": {
"geoidx": {
"index": "function(doc) {if (doc.geometry && doc.geometry.coordinates && doc.color != []) {st_index(doc.geometry);}}"
}
}
}
答案 0 :(得分:2)
在编写视图时,您可以执行任何Javascript代码,因此这更像是一个javascript问题,而不是CouchDB问题。
您的视图中的错误是您无法将javascript中的数组与相等运算符进行比较:doc.color != []
将始终返回false(因为它们不是相同的对象)。
如果您事先知道doc.color.length == 0
始终是一个数组,请尝试将其替换为doc.color
。
如果您不确定doc.color
是数组,请写isArray(doc.color) && doc.color.length == 0
。
您的观看代码将变为:
{"_id": "_design/geodd",
"_rev": "5-2729b1453b11f81261ddb3cf3f3de72f",
"st_indexes": {
"geoidx": {
"index": "function(doc) {if (doc.geometry && doc.geometry.coordinates && isArray(doc.color) && doc.color.length == 0) {st_index(doc.geometry);}}"
}
}
}