Couchbase n1ql 匹配任何子文档属性值

Couchbase n1ql match any of a sub document properties value

我的文档结构的另一个问题是:

{
  "desktop": {
    "default": {
      "s": {
        "camp": {
          "100112": 0,
          "100114": 0,
          "100122": 0
        },
        "score": 1
      }
    }
  }
} 

我想找到至少一个营地属性大于 0 的文档。我开始这样的事情:

select * from my_bucket t where ANY camp_id IN desktop.default.s.camp SATISFIES camp_id.value > 0 END

但是当然不行:)

有什么线索吗?

提前致谢!

使用 ANY ... IN ... SATISFIES 子句是正确的。

您查询的主要问题是您的临时 camp_id 对象中没有 value 属性。相反,您可以使用 OBJECT_VALUES 函数 (https://developer.couchbase.com/documentation/server/4.5/n1ql/n1ql-language-reference/objectfun.html) 从 camp 属性中提取值并直接比较它们。

您的查询类似于以下内容:

SELECT 
  * 
FROM my_bucket 
WHERE 
  ANY camp_val 
  IN OBJECT_VALUES(default.desktop.default.s.camp) 
  SATISFIES camp_val > 0 
END