2013-04-05 45 views
0

考虑以下员工的文档结构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和过滤器这个视图基于任何组合&发射属性的顺序(一个查询可能包括几个随机属性,可能就像鸭子打字一样)。可能吗?如果真的让我知道一些样本或链接。

谢谢

回答

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”的东西在树等的同一部分,我不知道这是好还是坏您。

如果您开始需要使用[字段名称:]值搜索的许多功能,则可能值得使用Lucene-CouchDB设置。有几个存在,但有点不成熟。

+0

感谢您的回复。你提供的链接教会了我一些新的想法。 但您的解决方案不能解决我的问题。我想根据许多随机属性进行查询。但是您的解决方案允许我根据任何1属性进行查询。 – 2013-04-08 11:52:41