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

时间:2017-03-23 10:55:27

标签: json ibm-cloud cloudant

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

{
      "selector": {
        "ne_status": {
            "$eq": "Q"
        },
        "type": {
            "$eq": "weak"
        },
        "parentId": {
            "$eq": ""
        }
    }
    }
经过一番挖掘,我发现了这个问题;这是声明:

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

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

"parentId" = ""

如果删除此语句,则选择器查询可以正常工作。

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

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

enter image description here

1 个答案:

答案 0 :(得分:2)

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

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

设置"$exists": true会返回包含该属性的文档。

您还可以使用以下表达式

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