【发布时间】:2018-08-27 18:47:07
【问题描述】:
我浏览了文档和 SO 问题,但没有为我的特定案例找到任何明确的答案。
查看这个复杂的(发射数组)键映射函数
function(doc) {
if (doc.userFirstName && doc.userLastName && doc.userGender && doc.homeCountry && doc.homeCity) {
emit([
doc.userFirstName,
doc.userMiddleName,
doc.userLastName,
], null)
}
我想用其中一些为空的值来查询它 - 因此查询可以接受来自键的 ANY 值,即
userFirstName = *anyvalue*
userMiddleName = *anyvalue*
userLastName = "Mozart"
如果可能 - 我的 startKey= 和 endKey= 请求参数应该是什么样的? 我试过了
startkey=[{},{},"Mozart"]&endkey=[{},{},"Mozart"]
但无济于事 - 没有行..
【问题讨论】:
-
这对于单个索引是不可能的。您只能对键的第一部分进行子键搜索。
-
“密钥的第一部分”是什么意思?当我们搜索 lastName 时,查询中应该存在(使用呈现的映射函数)firstName 和 middleName 吗?
-
我不确定“密钥的第一部分”是如何令人困惑的。您发出的密钥是
[doc.userFirstName, doc.userMiddleName, doc.userLastName]。 “第一部分”将是在其他部分之前的任何部分。例如,名字或名字的第一部分。例如,给定名称“John B Smith”,键可能是["John","B","Smith"],然后您可以搜索["J"]、或["John",B"]或["John","B","S"],但不能搜索[{},"B",{}]或[{},{},"Smith"] -
谢谢你,我猜对了。
标签: couchdb