Json 用于遍历对象数组的N1ql查询

Json 用于遍历对象数组的N1ql查询,json,couchbase,n1ql,Json,Couchbase,N1ql,下面是我正在研究的couchbase文档结构: { "name":"Harry", "lastname":"sam", "supplier_info": { "HU": [ { "40383": "Bangalore." },{ "41163": "new." } ], "SK": [ { "40383": "DYNAMIT KFT." } ] } 要求从

下面是我正在研究的couchbase文档结构:

  {
"name":"Harry",
"lastname":"sam",
"supplier_info": {
    "HU": [
      {
        "40383": "Bangalore."
      },{
        "41163": "new."
        }
    ],
"SK": [
      {
        "40383": "DYNAMIT KFT."
      }
    ]
}
要求从我的db获得所有文件,供应商编号为40383,与国家无关。如何使用N1ql查询实现这一点?我也没有国家信息

SELECT * FROM default WHERE ANY v IN ARRAY_FLATTEN(OBJECT_VALUES(supplier_info),2) SATISFIES "40383" IN OBJECT_NAMES(v) END;
输入数据

INSERT INTO default VALUES("kkk01",{ "supplier_info": { "HU": [ { "40383": "Bangalore." },{ "41163": "new." } ], "SK": [ { "40383": "DYNAMIT KFT." } ] }}), VALUES("kkk03",{ "supplier_info": { "HU": [ { "40383": "Bangalore." },{ "41164": "az." } ], "SK": [ { "40385": "DYNAMIT" } ] }});
以下查询提供了不同的国家/地区

SELECT DISTINCT country FROM (SELECT RAW ARRAY_FLATTEN(ARRAY ARRAY v.name FOR u IN v.val WHEN "40383" IN OBJECT_NAMES(u) END FOR v IN OBJECT_PAIRS(supplier_info) END,2) FROM default ) AS countries UNNEST countries AS country WHERE country IS NOT MISSING;
获取供应商编号为40383的所有记录的供应商名称、国家、名称和姓氏

SELECT q.name, q.lastname, s.country, s.snumber, s.sname FROM (SELECT name, lastname, ARRAY_FLATTEN(ARRAY ARRAY {"country":v.name, "snumber":OBJECT_PAIRS(u)[0].name, "sname":OBJECT_PAIRS(u)[0].val} FOR u IN v.val WHEN "40383" IN OBJECT_NAMES(u) END FOR v IN OBJECT_PAIRS(supplier_info) END,2) AS sinfo FROM default ) AS q UNNEST q.sinfo AS s;

如果我想检索查询中存在40383的国家和供应商名称,而不是整个文档,该怎么办???从选择原始数组中选择不同的国家/地区\u扁平数组v.name代表v.val中的u,当对象中的40383代表对象中的v结束供应商信息结束时,2从违约国家到非最新国家,再到国家不缺失的国家;非常感谢您的帮助:我的要求如下:这是我拥有的全部对象-{name:Harry,lastname:sam,供应商信息:{HU:[{40383:Bangalore.},{41163:new.}],SK:[{40383:DYNAMIT KFT.}]我需要一个查询,以获取供应商编号为40383的所有记录的供应商名称、国家、名称和姓氏。提前谢谢。您能帮助我吗