CouchDB视图 - 基于任何属性
问题描述:
考虑以下员工的文档结构CouchDB视图 - 基于任何属性
{
"_id":...,
"rev":...,
"type":"Employee",
"fName":...,
"lName":...,
"designation":...,
"department":...,
"reportingTo":...,
"isActive":..,
more attributes
more attributes
}
而在一个名为“雇员”
function(doc) {
if (doc.type=="Employee") {
emit({
"EID":doc._id,
"FirstName":doc.fName,
"LastName":doc.lName,
"Designation":doc.designation,
"Department":doc.department,
"ReportingTo":doc.reportingTo,
"Active":doc.isActive
},
null
);
}
};
我想查询查看下面的地图功能发射键作为JSON和过滤器这个视图基于任何组合&发射属性的顺序(一个查询可能包括几个随机属性,可能就像鸭子打字一样)。可能吗?如果真的让我知道一些样本或链接。
谢谢
答
我已经跑了几次相同的问题;你可以,但是你必须自己编制索引(并不是像你所做的那样在一个哈希中)。但是,你可以通过整个事情的价值来排放。这可能相当低效,但可以完成工作。 (请参阅此链接:View Snippets)
即:
function(doc) {
if (doc.type=="Employee") {
emit(["EID",doc.values.EID], doc.values);
emit(["FirstName", doc.fName], doc.values);
emit(["LastName", doc.lName], doc.values);
emit(["Designation", doc.designation], doc.values);
emit(["Department", doc.department], doc.values);
emit(["ReportingTo", doc.reportingTo], doc.values);
emit(["Active", doc.isActive], doc.values);
}
}
这使得所有的“EID”的东西在树等的同一部分,我不知道这是好还是坏您。
如果您开始需要使用[字段名称:]值搜索的许多功能,则可能值得使用Lucene-CouchDB设置。有几个存在,但有点不成熟。
感谢您的回复。你提供的链接教会了我一些新的想法。 但您的解决方案不能解决我的问题。我想根据许多随机属性进行查询。但是您的解决方案允许我根据任何1属性进行查询。 – 2013-04-08 11:52:41