当 cloudant 数据库中存在设计文档条目时,如何检查 cloudant 选择器查询中属性的空值

How to check empty value in an attribute in the cloudant selector query when there is an entry of design document is present in cloudant database

在这种情况下,我通过创建索引查询在我的文档中使用设计文档,但是当我 运行 Cloudant 中的以下选择器查询时,它给出了这个错误:

{
      "selector": {
        "ne_status": {
            "$eq": "Q"
        },
        "type": {
            "$eq": "weak"
        },
        "parentId": {
            "$eq": ""
        }
    }
    }

经过一番挖掘,我发现了问题;它是这样的声明:

**"parentId": {
        "$eq": ""
    }**

在我的场景中,我必须检查

"parentId" = ""

如果我删除这条语句,选择器查询就可以正常工作。

可能还有另一种方法可以使用突出显示的文本执行查询,但在那种情况下我们必须删除设计文档,根据我们的程序,这不是正确的方案, 因为我们正在通过 java 程序执行选择器。

有没有其他方法可以检查选择器查询中的空值?

您可以 select 不包含 parentId 属性 的文档使用 $exists selector:

  "selector": {
       ...
       ,
       "parentId": {
          "$exists": false
        }
  }

设置 "$exists": true returns 包含 属性 的文档。

您还可以使用以下表达式

{
  "selector": {
    "ne_status": {
         "$eq": "Q"
     },
     "type": {
         "$eq": "weak"
     },
     "parentId": {
         "$eq": ""
     }
 },
 "fields": [
   "_id",
   "_rev"
 ]
}