0

考虑遵循员工文档结构

{ 
   "_id":...,
   "rev":...,
   "type":"Employee",
   "fName":...,
   "lName":...,
   "designation":...,
   "department":...,
   "reportingTo":...,
   "isActive":..,
   more attributes
   more attributes
}

并在名为“Employee”的视图中遵循地图功能

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
        );
  }
};

我想根据发射属性的任何组合和顺序查询此视图(查询可能包括一些随机属性,可能像鸭子打字)。可能吗?如果是这样,请让我知道一些示例或链接。

谢谢

4

1 回答 1

0

我遇到过几次同样的问题;你可以,但你必须自己索引每个(而不是像你所做的那样全部在一个哈希中)。但是你可以通过emit的值来完成整个事情。它可能效率很低,但可以完成工作。(请参阅此链接:查看片段

IE:

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:]value 搜索的大量功能,那么转向 Lucene-CouchDB 设置可能是值得的。有几个存在,但有点不成熟。

于 2013-04-07T22:54:12.273 回答