我在java中使用couchbase API
View view = client.getView("dev_1", "view1");
Query query = new Query();
query.setIncludeDocs(true);
query.setKey(this.Key);
ViewResponse res=client.query(view, query);
for(ViewRow row: res)
{
// Print out some infos about the document
a=a+" "+row.getKey()+" : "+row.getValue()+"<br/>";
}
return a;
和couchbase中的java脚本视图
function (doc,meta) {
emit(meta.id,doc);
}
所以,当我删除语句query.setkey(this.Key)时,它会返回我所有的表,我在这里缺少什么..如何更改函数以仅反映键中提到的表名< / p>
答案 0 :(得分:0)
像这样更改地图功能:
function (doc,meta) {
emit(doc.table,null);
}
最好不要发出整个文档,如:
emit(doc.table, doc)
注意:这非常重要:
我尝试过多次使用setKey("key")
来自Java项目并使用CouchBase Console 3.0.1的Filter Result
对话框设置密钥,但没有返回任何内容。
有一天,我使用setInclusiveEnd
并且它有效。我检查了CouchBase Console 3.0.1的Filter Result
对话框中的setInclusiveEnd复选框,我得到了json输出。
query.setKey("whatEverKey");
query.setInclusiveEnd(true);
我希望这对有同样问题的其他人有所帮助。如果有人找到另一条出路,请随时添加评论。
我不知道为什么他们的文档没有指明这一点。
<强> EXTRA 强>
如果您的json派生自Java项目中的实体类,请确保包含if statement
以测试实体类名称的json字段以包含您emit
语句。这样可以避免将密钥作为null
发出:
if(doc._class == "path.to.Entity") {
emit(doc.table, null);
}