Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从couchbase查询深层嵌套json值?_Json_Regex_Nested_Couchbase_N1ql - Fatal编程技术网

如何从couchbase查询深层嵌套json值?

如何从couchbase查询深层嵌套json值?,json,regex,nested,couchbase,n1ql,Json,Regex,Nested,Couchbase,N1ql,如何从couchbase查询深层嵌套json值?我在couchbase桶里有以下文件。我需要查询appversion>3.2.1或appversion要查询嵌套实体,应使用unnest关键字: 在您的情况下,它将类似于: select t.* from mybucket t UNNEST `t.value` v where t.doc-type = 'Internal-Metadata' and v.appversion = '3.2.1' 由于应用程序版本是字符串,您应该使用replace

如何从couchbase查询深层嵌套json值?我在couchbase桶里有以下文件。我需要查询appversion>3.2.1或appversion要查询嵌套实体,应使用unnest关键字:

在您的情况下,它将类似于:

select t.* from mybucket t UNNEST `t.value` v where t.doc-type = 'Internal-Metadata' and v.appversion = '3.2.1'
由于应用程序版本是字符串,您应该使用replace函数删除“”,然后在比较之前将其转换为int


我不太确定您想要什么,但是如果您想要一个只返回文档3的查询,这个查询应该可以

SELECT *
FROM sampleBucket
WHERE value.appversion>"3.2.1" OR value.appversion <"3.3.0" OR value.appversion="3.4.1"
选择*
从样本桶

如果value.appversion>“3.2.1”或value.appversionvalue是保留关键字,则需要在其周围使用反勾号

SELECT *
FROM sampleBucket
WHERE `doc-type` = 'Internal-Metadata' AND
      (`value`.appversion>"3.2.1" OR 
      `value`.appversion <"3.3.0" OR 
      `value`.appversion="3.4.1");
选择*
从样本桶
其中,`doc type`=“内部元数据”和
(`value`.appversion>“3.2.1”或

`值“”.appversion运行此查询时,我没有得到任何响应。当值对象为数组时,它将重新返回一行,否则返回空。如何查询嵌套实体是对象??否,上述查询不起作用..:(我需要选择包含appversion=3.4.1的行。但我无法查询“从mybucket中选择*其中appversion=3.4.1”,因为appversion位于value对象(深度嵌套对象)下。我想使用n1ql查询该行。有没有办法查询嵌套对象?它必须是value.appversion。圆点是深入到“value”子对象的点。是的,我使用value.appversion进行了查询,但出现错误。。{“code”:3000,“msg”:“语法错误-at value”,“从用户处查询”:“从mybucket中选择*value.appversion=\“3.4.1\”;”}确保测试代码是否正确处理大于9的版本组件。例如,确保在比较
1.2.3
1.10.0
时获得预期结果。
select t.* from mybucket t UNNEST `t.value` v where t.doc-type = 'Internal-Metadata' and v.appversion = '3.2.1'
SELECT *
FROM sampleBucket
WHERE value.appversion>"3.2.1" OR value.appversion <"3.3.0" OR value.appversion="3.4.1"
SELECT *
FROM sampleBucket
WHERE `doc-type` = 'Internal-Metadata' AND
      (`value`.appversion>"3.2.1" OR 
      `value`.appversion <"3.3.0" OR 
      `value`.appversion="3.4.1");