如何使用cloudant选择器查询在字符串向量中执行通配符搜索

时间:2019-01-02 18:07:05

标签: wildcard cloudant

不同的文档包含以下结构:

 1."dev": {
    "urls": ["https://text.com/00a51073"]
  }

 2. "dev": {
            "urls": ["https://text.com/410578c1","https://text.com/00a51073"]
          }

如何执行通配符搜索,以便搜索“ 00a51073”应返回上述两个文档?

{
   "selector": {
      "$and": [
         {
            "$or": [
               {
                  "dev": {
                     "urls": {
                        "$regex": ".*00a51073"
                     }
                  }
               }
            ]
         }
      ]
   }
}

1 个答案:

答案 0 :(得分:0)

如何使用原始的map-reduce视图代替呢?只需将每个url的最后一位用作键,即可将所有文档检索为范围查询。地图可能看起来像

function(doc) {
    if (doc && doc.dev && doc.dev.urls) {
        doc.dev.urls.forEach(function(url) {
            var data = url.split("/");
            emit(data[data.len-1], 1);
        });
    }
}

然后您可以查询类似

curl 'https://...cloudant.com/DB/_design/DD/_view/by_url?startkey="00a51073"&endkey="00a51073."&include_docs=true'