在 couchbase 中过滤数组字段

Filter array field in 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?!

如果您只想过滤一个状态,那么最好的解决方案是制作这样的视图:

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

此视图将为每个 'customer' 类型文档的数组中的每个状态发出一个视图行。这意味着您可以 select 具有 "CA" 起始键和 "CA" 结束键的单个状态,请记住将 inclusive_true 标志设置为 true,以便匹配的结束键包括:

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

希望对您有所帮助!