动态使用“WHERE”子句的沙发基础视图



我有以下格式的 Json 文档

Name :
Class :
City :
Type :
Age :
Level :
Mother :
Father :

我有这样的地图函数

function(doc,meta)
{
    emit([doc.Name,doc.Age,doc.Type,doc.Level],null);
}
我能做的是给出"名称"并过滤掉

所有结果,但我也想做的是只给出"年龄"并过滤掉它。为此,couchbase 不提供跳过"名称"键的功能。所以我必须创建一个以"年龄"作为第一个键的新地图函数,但我也必须像这样只查询"级别"键。我必须为每个字段创建许多地图函数,这显然是不可行的,那么除了制作新的地图函数来实现这种类型的功能之外,我还能做些什么吗?我不能使用 n1ql,因为我有 1.5 亿个文档,所以需要很多时间。

首先 - 这不是一个非常好的reduce函数。

  1. 它没有任何过滤
  2. 函数
  3. 头应该是函数(doc,meta)
  4. 如果 JSON 和二进制对象混合使用 - 添加 meta.type == "json"

现在,您可以执行以下操作:

  1. 如果您使用的是 v4 及更高版本(更推荐使用 v4.1),您可以使用 N1QL 并使用它与 SQL 语言非常相似。(我不明白为什么你不能使用 n1ql)
  2. 可以按多个顺序发出多个项目

即如果我有格式的文档

{
  "name": "Roi",
  "age": 31
}

我可以向索引发出两个值:

function (doc, meta) {
  if (meta.type=="json") {
    emit(doc.name, null);  
    emit(doc.age, null);
  }
}

现在我可以按 2 个值进行查询。这比创建 2 个视图要好得多。

无论如何,如果您有要过滤的内容 - 始终建议您这样做。

相关内容

  • 没有找到相关文章

最新更新