给定以下对象结构:
{
key1: "...",
key2: "...",
data: "..."
}
Run Code Online (Sandbox Code Playgroud)
有没有办法通过查询key1和key2来从CouchDB获取此对象而不设置两个不同的视图(每个键一个),如:
select * from ... where key1=123 or key2=123
Run Code Online (Sandbox Code Playgroud)
亲切的问候,Artjom
编辑:
以下是对问题的更好描述:上述对象是序列化游戏状态.游戏中只有一个创建者用户(key1)和他的对手(key2).对于给定的用户,我希望得到他所涉及的所有游戏(作为创造者和对手).
发出两个键(如果相等则仅发出一个):
function(doc) {
if (doc.hasOwnProperty('key1')) {
emit(doc.key1, 1);
}
if (doc.hasOwnProperty('key2') && doc.key1 !== doc.key2) {
emit(doc.key2, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
查询(正确的 url 编码):
?include_docs=true&key=123
Run Code Online (Sandbox Code Playgroud)
或具有多个值:
?include_docs=true&keys=[123,567,...]
Run Code Online (Sandbox Code Playgroud)
更新:更新为使用单个查询查询多个值。