【问题标题】:How to index nested array如何索引嵌套数组
【发布时间】:2018-01-11 13:51:51
【问题描述】:

如何在文档上方建立索引(Couchbase 中的 N1QL 查询)以加快嵌套数组(doc => groups => items => item.SerialNumber)中 SerialNumber 字段的搜索?

示例:

{
  "Id": "0012ed6e-41af-4e45-b53f-bac3b2eb0b82",
  "Machine": "Machine2",
  "Groups": [        
    {
      "Id": "0fed9b14-fa38-e511-893a-001125665867",
      "Name": "Name",
      "Items": [
        {
          "Id": "64e69b14-fa38-e511-893a-001125665867",
          "SerialNumber": "1504H365",
          "Position": 73
        },
        {
          "Id": "7be69b14-fa38-e511-893a-001125665867",
          "SerialNumber": "1504H364",
          "Position": 72
        }
      ]
    },
    {
      "Id": "0fed9b14-fa38-e511-893a-001125665867",
      "Name": "Name",
      "Items": [
        {
          "Id": "64e69b14-fa38-e511-893a-001125665867",
          "SerialNumber": "1504H365",
          "Position": 73
        },
        {
          "Id": "7be69b14-fa38-e511-893a-001125665867",
          "SerialNumber": "1504H364",
          "Position": 72
        }
      ]
    }
  ]
}

我的查询:

CREATE INDEX idx_serial ON `aplikomp-bucket` 
(ALL ARRAY(ALL ARRAY i.SerialNumber FOR i IN g.Items END ) FOR g In Groups END);

【问题讨论】:

    标签: json indexing couchbase n1ql


    【解决方案1】:
    CREATE INDEX idx_serial ON `aplikomp-bucket` (DISTINCT ARRAY(DISTINCT ARRAY i.SerialNumber FOR i IN g.Items END ) FOR g In Groups END);
    
    SELECT META().id FROM `aplikomp-bucket` AS a
    WHERE ANY g IN a.Groups SATISFIES (ANY i IN g.Items SATISFIES i.SerialNumber > 123 END) END;
    

    【讨论】:

    • 谢谢。索引似乎工作,但例如SELECT i.SerialNumber 不
    • 如果你需要投影序列号,那么试试这个 CREATE INDEX idx_serial ON aplikomp-bucket (ALL ARRAY(DISTINCT ALL i.SerialNumber FOR i IN g.Items END ) FOR g In Groups END); SELECT i.SerialNumber FROM aplikomp-bucket 作为 UNNEST a.Groups AS g UNNEST g.Items AS i WHERE i.SerialNumber > 123;
    猜你喜欢
    • 1970-01-01
    • 2018-11-16
    • 2021-11-30
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多