【问题标题】:Couchbase views queryCouchbase 视图查询
【发布时间】:2015-10-21 18:33:13
【问题描述】:

我有一个视图可以为我过滤掉数据。我想在我的搜索条件中添加一个检查 => 如果文档中不存在某个字段,请不要考虑该文档。

这是我的视图代码,studentId可能不会出现在所有文档中。

function (doc, meta) {
   if(meta.id && meta.id.indexOf("DOCUMENT_") == 0 && doc.studentId != null) {
   emit([doc.studentId, doc.studentStatus, doc.studentName], null);
  }
}

任何指针?

【问题讨论】:

  • 你的问题是什么,能不能说的更准确一点?
  • @JulianGo - 这里是 => 我想在我的搜索条件中添加一个检查 => 如果文档中不存在某个字段,请不要考虑该文档。
  • 那么您的代码应该可以解决问题...请参阅 FuzzyAmi 的改进答案。也许您还希望您的 studentId 测试只是 if (doc.studentId && meta.id.indexOf("DOCUMENT_") == 0)

标签: couchbase couchbase-view


【解决方案1】:

在您的代码中,只需使用您之前在 if 语句中使用的相同语法:

if(doc.studentId && meta.id && meta.id.indexOf("DOCUMENT_") == 0) ...

注意以下

如果(doc.studentId...

如果 studentId 已定义将返回 true,否则返回 false。

【讨论】:

    【解决方案2】:

    只是一个微小的优化 - 如果存储桶中的许多文档都缺少它,您可能希望将 doc.studentId 移动到条件的开头。

    另外,不是所有文档都有 meta.id 吗?测试它似乎很奇怪......

    【讨论】:

    • 还有一件事:视图很棒,但不要依赖它们为您带来最新数据:它们甚至可能返回已删除的数据。如果您访问的文档不是很大并且您想要最新的数据(特别是如果您的文档经常被删除),您可能应该将文档附加到视图而不是发出您想要的字段。这将提高结果的准确性(确保不检索已删除的项目等)
    • @fuzzyami: 或者使用 Stale = false 查询视图
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 2015-11-03
    • 2020-06-17
    相关资源
    最近更新 更多