【问题标题】:double join between json array lists with n1ql couchbasejson数组列表与n1ql couchbase之间的双重连接
【发布时间】:2016-08-19 14:40:30
【问题描述】:

我有以下名为 User 的 json 条目。有一个 selectedItemList 列表,可让用户对项目负责。

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

以下 3 项将 itemId 保持为唯一值

    "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"
}

有以下命令将项目 ID 保存为列表

"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"
}

我的问题是:我尝试获取负责用户“tom”下的项目订单列表。 我的方式是:通过加入从订单中获取商品。但我无法将它与用户 tom 的 selectedItemList 和 itemId 加入(因为它不是一个对象,它是一个 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 ........

所以,我在第二次加入后无法写作,我对此一无所知。

【问题讨论】:

    标签: json join couchbase n1ql nosql


    【解决方案1】:

    试试这个:

    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
    ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      • 1970-01-01
      相关资源
      最近更新 更多