以下是我正在处理的couchbase文档结构:
{
"name":"Harry",
"lastname":"sam",
"supplier_info": {
"HU": [
{
"40383": "Bangalore."
},{
"41163": "new."
}
],
"SK": [
{
"40383": "DYNAMIT KFT."
}
]
}
要求是从我的数据库获取所有供应商编号为" 40383"不论国家。我怎么能用N1ql查询呢? (我也没有国家信息)
答案 0 :(得分:1)
SELECT * FROM default
哪一个在ARRAY_FLATTEN(OBJECT_VALUES(supplier_info),2)在OBJECT_NAMES(v)END中满足“40383”;
输入数据
INSERT INTO默认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国家AS国家的国家不缺;
获取供应商编号为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当“40383”在OBJECT_NAMES(u)结束时对于OB IN OBJECT_PAIRS(supplier_info)END,2)AS sinfo FROM default)AS q UNNEST q.sinfo AS s;