Mapreduce 如何检查沙发底座视图键中的内容

Mapreduce 如何检查沙发底座视图键中的内容,mapreduce,couchdb,couchbase,membase,Mapreduce,Couchdb,Couchbase,Membase,我有一个像这样的观点 function (doc, meta) { if(doc.Tenant) { emit([doc.Tenant.Id,doc.Tenant.User.Name],doc); } } 在这个视图中,我希望所有的值都属于Tenant.Id==1和User.Name,其中包含“a” 我可以通过收集属于特定租户Id的所有租户数据,在我的C#中搜索此信息。 但我有每个租户数百万的数据。所以需要在服务器端本身检查这一点。 这是

我有一个像这样的观点

    function (doc, meta)
    {
    if(doc.Tenant)
    {
    emit([doc.Tenant.Id,doc.Tenant.User.Name],doc);
    }
    }
在这个视图中,我希望所有的值都属于Tenant.Id==1和User.Name,其中包含“a”

我可以通过收集属于特定租户Id的所有租户数据,在我的C#中搜索此信息。 但我有每个租户数百万的数据。所以需要在服务器端本身检查这一点。
这是可以搜索的。

我猜您希望能够更改在字符串中搜索的字母,不幸的是,couchbase不是这种类型查询的最佳选择

如果您要搜索的字母总是“a”,那么您可以这样做一个映射,然后查询id

function (doc, meta) {

  if(doc.Tenant) {
    var name = doc.Tenant.User.Name.toLowerCase();
    if(name.indexOf("a") > -1) {    
       emit(doc.Tenant.Id,null); 
    }
  } 
}

如果你想动态地改变你想在名字中搜索哪个字母甚至子串,那么你就要考虑像弹性搜索这样的东西(非常适合文本搜索)。Couchbase有一个elasticsearch传输插件,可以自动复制到您的elasticsearch节点

下面是关于ES和Couchbase的演示

ES插件的安装和入门文档

还有一个很酷的教程,详细介绍了如何在ES数据上添加GUI,以便于过滤


id和字母是否发生变化?也就是说,有时您希望搜索id 2,而名称包含F?