在couchbase中对视图数据执行筛选的最佳方法

在couchbase中对视图数据执行筛选的最佳方法,couchbase,Couchbase,根据couchbase中的标记从视图中筛选记录的最佳方法是什么?我的意思是,我知道我可以从文档中提取标记,并使用视图中的映射功能将它们用作键。但是有没有一种方法可以根据记录的键(可以是多个值)是否包含标记从视图中选择记录 示例:我有一个事务,它有以下标记(标记1、标记2、标记3、标记4),每个视图记录(来自emit函数)如下所示 发出([tag1,tag2,tag3,tag4],null) 我想得到的是所有有tag2的记录 谢谢你的帮助。两条建议。。。如果视图的唯一目的是查找具有特定标记的记录,

根据couchbase中的标记从视图中筛选记录的最佳方法是什么?我的意思是,我知道我可以从文档中提取标记,并使用视图中的映射功能将它们用作键。但是有没有一种方法可以根据记录的键(可以是多个值)是否包含标记从视图中选择记录

示例:我有一个事务,它有以下标记(标记1、标记2、标记3、标记4),每个视图记录(来自emit函数)如下所示

发出([tag1,tag2,tag3,tag4],null)

我想得到的是所有有tag2的记录


谢谢你的帮助。

两条建议。。。如果视图的唯一目的是查找具有特定标记的记录,则只需为每个标记发出一个视图行

function (doc) {
  if (doc.tags) {
    for(var idx in doc.tags) {
      emit(doc.tags[idx], null);
    }
  }
}
此映射函数将为您提供以下行:

{"total_rows":13,"rows":[
{"id":"foo_doc_1","key":"a","value":null},
{"id":"foo_doc_3","key":"a","value":null},
{"id":"foo_doc_1","key":"b","value":null},
{"id":"foo_doc_2","key":"b","value":null},
{"id":"foo_doc_3","key":"b","value":null},
{"id":"foo_doc_1","key":"c","value":null},
{"id":"foo_doc_2","key":"c","value":null},
{"id":"foo_doc_1","key":"d","value":null},
{"id":"foo_doc_4","key":"d","value":null},
{"id":"foo_doc_4","key":"e","value":null}
]
}
当您按键(例如key=“a”)进行查询时,您将得到该键的结果。但是,如果您关心的是“将第二个标记为'xyz'的所有文档提供给我”,那么您也可以发出索引

function (doc) {
  if (doc.tags) {
    for(var idx in doc.tags) {
      emit([parseInt(idx), doc.tags[idx]], null);
    }
  }
}
在本例中,行的内容如下:

{"total_rows":13,"rows":[
{"id":"foo_doc_1","key":[0,"a"],"value":null},
{"id":"foo_doc_3","key":[0,"a"],"value":null},
{"id":"foo_doc_2","key":[0,"b"],"value":null},
{"id":"foo_doc_4","key":[0,"d"],"value":null},
{"id":"foo_doc_1","key":[1,"b"],"value":null},
{"id":"foo_doc_3","key":[1,"b"],"value":null},
{"id":"foo_doc_2","key":[1,"c"],"value":null},
{"id":"foo_doc_4","key":[1,"e"],"value":null},
{"id":"foo_doc_1","key":[2,"c"],"value":null},
{"id":"foo_doc_4","key":[2,"f"],"value":null}
]
}

然后使用数组键进行查询,以获取特定位置的键(例如,key=[1,“b”])

两条建议。。。如果视图的唯一目的是查找具有特定标记的记录,则只需为每个标记发出一个视图行

function (doc) {
  if (doc.tags) {
    for(var idx in doc.tags) {
      emit(doc.tags[idx], null);
    }
  }
}
此映射函数将为您提供以下行:

{"total_rows":13,"rows":[
{"id":"foo_doc_1","key":"a","value":null},
{"id":"foo_doc_3","key":"a","value":null},
{"id":"foo_doc_1","key":"b","value":null},
{"id":"foo_doc_2","key":"b","value":null},
{"id":"foo_doc_3","key":"b","value":null},
{"id":"foo_doc_1","key":"c","value":null},
{"id":"foo_doc_2","key":"c","value":null},
{"id":"foo_doc_1","key":"d","value":null},
{"id":"foo_doc_4","key":"d","value":null},
{"id":"foo_doc_4","key":"e","value":null}
]
}
当您按键(例如key=“a”)进行查询时,您将得到该键的结果。但是,如果您关心的是“将第二个标记为'xyz'的所有文档提供给我”,那么您也可以发出索引

function (doc) {
  if (doc.tags) {
    for(var idx in doc.tags) {
      emit([parseInt(idx), doc.tags[idx]], null);
    }
  }
}
在本例中,行的内容如下:

{"total_rows":13,"rows":[
{"id":"foo_doc_1","key":[0,"a"],"value":null},
{"id":"foo_doc_3","key":[0,"a"],"value":null},
{"id":"foo_doc_2","key":[0,"b"],"value":null},
{"id":"foo_doc_4","key":[0,"d"],"value":null},
{"id":"foo_doc_1","key":[1,"b"],"value":null},
{"id":"foo_doc_3","key":[1,"b"],"value":null},
{"id":"foo_doc_2","key":[1,"c"],"value":null},
{"id":"foo_doc_4","key":[1,"e"],"value":null},
{"id":"foo_doc_1","key":[2,"c"],"value":null},
{"id":"foo_doc_4","key":[2,"f"],"value":null}
]
}

然后使用数组键进行查询,以获取特定位置的键(例如,key=[1,“b”])

当我说tag2表示tag2的特定值时,当我说tag2表示tag2的特定值时