考虑遵循员工文档结构
{
"_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
);
}
};
我想基于任何组合查询此视图&发出的属性的顺序(查询可能包括很少的随机属性可能像鸭子打字)。可能吗?如果愿意,请告诉我一些样品或链接。
由于
答案 0 :(得分:0)
我遇到过几次同样的问题;你可以,但你必须自己索引(不是像你一样在一个哈希中)。但你可以通过发射值的整个事情。它可能效率很低,但可以完成工作。 (见此链接: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”内容放在树的同一部分等等,我不确定这对你是好还是坏。
如果你开始在[field name:]值搜索中开始需要很多功能,那么它可能值得转向Lucene-CouchDB设置。有几个存在,但有点不成熟。