как создать индекс и использовать соединение в N1QL и Couchbase

У меня есть три json, как показано ниже, в том же сегменте по умолчанию

Как мне присоединиться к этим трем json ??

первый

"Country|1":{
  "_id": 1,
  "_type": "Country",
  "currency": "Afghani",
  "iso2": "AF",
  "name": "Afghanistan"
}

второй

"Company|a1091aa0-b548-11e6-957e-139be07f46df": 
  {
  "_id": "a1091aa0-b548-11e6-957e-139be07f46df",
  "_type": "Company",
  "companyTypes": [
    1
  ],
  "country": "Country|1",
}

В третьих

"Campaign|1001":{
  "_id": 1001,
  "_type": "Campaign",
  "banners": [],
  "carriers": [
    "Telstra"
  ],
  "country": 1,
  "created": "2016-03-08T18:30:00.000Z",

 }

здесь ключ - это "name | _id", который я пишу перед каждым json.

У меня этот тип все json. Я пытаюсь присоединиться к запросу, как показано ниже, по ссылке на этот источник Couchbase N1QL join query

SELECT d1.*,d2.* FROM 
default d1 USE KEYS "Company|a1091aa0-b548-11e6-957e-139be07f46df"
JOIN default d2 ON KEYS d1.country;

Я получаю желаемый результат.

Но когда я удаляю USE KEYS "Company | a1091aa0-b548-11e6-957e-139be07f46df", а затем выполняю запрос ниже, я получаю ошибку для INDEX

SELECT d1.*,d2.*
FROM default d1 
JOIN default d2 ON KEYS d1.country;

Также я пытаюсь создать индекс, как показано ниже

CREATE INDEX campaign_user_co ON `default` (TOSTRING(country)) 
where _type="Company"

Даже я получаю ошибку Индекс.

В пространстве ключей по умолчанию нет индекса, соответствующего вашему запросу.


person krishn Patel    schedule 01.12.2016    source источник
comment
Что такое ошибка индекса?   -  person geraldss    schedule 01.12.2016
comment
Нет доступного индекса для ключевого пространства desireEffect, который соответствует вашему запросу. Я получаю эту ошибку   -  person krishn Patel    schedule 02.12.2016


Ответы (1)


Попробуйте добавить первичный индекс.

CREATE PRIMARY INDEX ON default;

Замените имя своего пространства ключей на по умолчанию.

person geraldss    schedule 02.12.2016
comment
зачем мне индекс ?? - person krishn Patel; 05.12.2016
comment
Вам нужен первичный или вторичный индекс. Couchbase - это распределенная база данных, поэтому не все данные хранятся в одном месте. Единственный способ сделать запрос по кластеру - использовать индекс. - person geraldss; 05.12.2016