在couchbase中过滤数组字段

时间:2015-06-01 21:22:41

标签: android view filter mapreduce couchbase

我正在使用couchbase lite android。 我有一系列文件,每个文件都包含一个字段,它的值是字符串数组。 现在我想过滤这个字段的值。

{
    type : "customer",
    name: "customerX",
    states: [ "IL" , "IO" , "NY" , "CA" ]
},
{
    type : "customer",
    name: "customerY",
    states: [ "WY" , "CA", "WA" ]
},
{
    type : "customer",
    name: "customerZ",
    states: [  "NY" ]
}

我想获得有" CA"在他们的州领域。 我正在使用CBL Android。

emit(states , null);

然后我如何制作我的开始和结束键选项。

startkey("CA")
Or
startKey(["CA"])


customerX customerY

我怎样才能通过" CA"来获得customerX和customerY?在他们的州领域?!

1 个答案:

答案 0 :(得分:0)

如果你只想过滤一个状态,那么你最好的解决办法就是建立一个这样的观点:

 function (doc, meta) {
 if(doc.type && doc.type == "customer") {
   if(doc.states) {
     for (index = 0, len = doc.states.length; index < len; ++index) {
       emit(doc.states[index],null);
     } 
    }
   }
  }

此视图将为每个类型为&#39; customer&#39;的文档的数组中的每个州发出一个视图行。这意味着您可以选择一个单独的状态,其启动键为&#34; CA&#34;并且&#34; CA&#34;的结束键,记得将inclusive_true标志设置为true,以便包含匹配的结束键:

startkey="CA"&endkey="CA"&inclusive_end=true

希望有所帮助!