2016-08-19 7 views
0

ユーザーと呼ばれる次のjsonエントリがあります。 selectedItemListリストがあり、ユーザーの責任の下にアイテムを保持します。n1ql couchbaseを使用したjson配列リスト間の二重結合

"myproject": { 
    "_class": "com.demo.model.entity.User", 
    "active": true, 
    "createDate": 1470826033000, 
    "description": "", 
    "firstname": "Tom", 
    "selectedItemList": [ 
    "MTR44", 
    "MTR55", 
    "MTR66" 
    ], 
    "type": "user", 
    "username": "tom" 
} 

固有の値としてのitemIdを保つ3つの項目

"myproject": { 
    "_class": "com.demo.model.entity.Item", 
    "deleted": false, 
    "factor": 0, 
    "itemId": "MTR66", 
    "type": "item" 
} 

"myproject": { 
    "_class": "com.demo.model.entity.Item", 
    "deleted": false, 
    "factor": 0, 
    "itemId": "MTR55", 
    "type": "item" 
} 

"myproject": { 
    "_class": "com.demo.model.entity.Item", 
    "deleted": false, 
    "factor": 0, 
    "itemId": "MTR44", 
    "type": "item" 
} 

"myproject": { 
    "_class": "com.demo.model.entity.Orders", 
    "model": "DR-503", 
    "deleted": false, 
    "itemIdList": [ 
     "MTR66", 
     "MTR55" 
    ], 
    "type": "order" 
} 

"myproject": { 
    "_class": "com.demo.model.entity.Orders", 
    "model": "DR-504", 
    "deleted": false, 
    "itemIdList": [ 
     "MTR44" 
    ], 
    "type": "order" 
} 

リストとしてアイテムidを保ち、次の注文がありますされて、私の質問は:私がしよう責任ユーザ "tom"の下にあるアイテムの注文リストを取得する。 私のやり方は次のとおりです。しかし、私はitemIdを使ってユーザーのtomのselectedItemListと結合できませんでした(objestではないので、json配列です)。

SELECT META(myproject).id as _ID, META(myproject).cas as _CAS, myproject.* 
FROM myproject 
LEFT JOIN myproject item ON KEYS ARRAY itemId FOR itemId IN myproject.itemIdList 
LEFT JOIN ........ 

私は2回目の参加後に書き込めませんでした。私はそれについて考えていません。

答えて

0

これを試してみてください:

create index idxorderlist on myproject(itemIdList); 

SELECT * 
FROM myproject u USE KEYS ["tom"] 
     LEFT OUTER JOIN myproject item ON KEYS u.selectedItemList 
     LEFT OUTER JOIN myproject `order` ON KEY `order`.itemIdList FOR item 
; 
関連する問題