如果数组字段的计数大于 0,CouchDB 将文档包含在索引中
CouchDB include document in index if count of array field is greater than 0
我正在使用 Cloudant,它只是具有更多功能的 CouchDB,我正在寻找用于计算数组中元素数量的语法。具体来说,我正在创建一个设计文档,如果它的字段 'color' 有超过 0 个元素,我只索引文档。如何检查 'color' 中是否有超过 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);}}"
}
}
}
编写视图时,您可以执行任何 Javascript 代码,因此这更像是一个 javascript 问题,而不是 CouchDB 问题。
您认为的错误是您不能将 javascript 中的数组与相等运算符进行比较:doc.color != []
将始终 return false(因为它们不是相同的对象)。
如果您事先知道 doc.color
始终是一个数组,请尝试将其替换为 doc.color.length == 0
。
如果您不确定 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);}}"
}
}
}
我正在使用 Cloudant,它只是具有更多功能的 CouchDB,我正在寻找用于计算数组中元素数量的语法。具体来说,我正在创建一个设计文档,如果它的字段 'color' 有超过 0 个元素,我只索引文档。如何检查 'color' 中是否有超过 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);}}"
}
}
}
编写视图时,您可以执行任何 Javascript 代码,因此这更像是一个 javascript 问题,而不是 CouchDB 问题。
您认为的错误是您不能将 javascript 中的数组与相等运算符进行比较:doc.color != []
将始终 return false(因为它们不是相同的对象)。
如果您事先知道 doc.color
始终是一个数组,请尝试将其替换为 doc.color.length == 0
。
如果您不确定 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);}}"
}
}
}