0

我尝试按属性查询带有 _find 端点的 couchdb 服务器,以“$”开头(在我的情况下为 $ref)。但服务器总是返回空文档集。

  1. 我有这样的couchdb文件:
{
  "_id": "59bb208006149f50bb32f76f4900ccfa",
  "_rev": "1-99022821cc2bb3ab0bdd84ab98b55828",
  "contents": {
    "eClass": "auth#//User",
    "name": "SuperAdminUser",
    "roles": [
      {
        "eClass": "auth#//Role",
        "$ref": "59bb208006149f50bb32f76f4900c962?rev=1-24d9469afe50f162e473b09fdbd95154#/"
      }
    ],
    "email": "admin@mydomain.ru",
  }
}
  1. 我尝试像这样查询此文档:
{
    "contents": {
        "eClass": "auth#//User",
        "roles": {
            "$elemMatch": {
                "eClass": {"$regex": ".*auth#//Role"},
                "$ref": {"$regex": "^59bb208006149f50bb32f76f4900c962.*"}
            }
        }
    }   
}

但没有返回任何结果。

  1. 查询喜欢
{
    "contents": {
        "eClass": "auth#//User",
        "roles": {
            "$elemMatch": {
                "eClass": {"$regex": ".*auth#//Role"}
            }
        }
    }   
}

按预期工作。

芒果服务器似乎无法识别 $ref 之类的属性。

我试图用“\$ref”转义属性,但没有成功。(不是真的!!!,见更新)

是否有任何解决方法来查询像 $ref 这样的属性?

4

1 回答 1

0

注意:OP 提供了这个答案作为问题的更新。我已将其移至此处以符合站点标准。


此查询有效。

{
   "selector": {
      "contents": {
         "eClass": "auth#//User",
         "roles": {
            "$elemMatch": {
               "eClass": {
                  "$regex": ".*auth#//Role"
               },
               "\\$ref": {
                  "$regex": ".*59bb208006149f50bb32f76f4900c962.*"
               }
            }
         }
      }
   }
}

所以只需使用 "\\$ref" 转义样式。

于 2020-01-08T22:18:55.547 回答