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
我的文档结构的另一个问题是:
{
"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