Как добавить индекс и массив запросов в объекте в couchbase? - PullRequest
0 голосов
/ 18 марта 2019

Наличие нескольких документов со структурой, подобной этой:

{
'key1':value,
'key2':value2,
'galaxy':{
           'planets':['earth','mars','welcomebackpluto']
           'sun': 'something'
          }
}

Я бы хотел запросить все документы, которые имеют mars в массиве planets в объекте galaxy.

Созданные мной индексы не сработали, и я не могу их запросить, есть идеи как?

1 Ответ

1 голос
/ 18 марта 2019

Использовать индексирование массива

CREATE INDEX ix1 ON default (DISTINCT ARRAY (DISTINCT ARRAY p FOR p IN g.planets END) FOR g IN galaxy END) WHERE type = "xyz";

SELECT d.*
FROM default AS d
WHERE d.type = "xyz" AND ANY g IN d.galaxy SATISFIES (ANY p IN g.planets SATISFIES p = "mars" END) END;

https://docs.couchbase.com/server/6.0/n1ql/n1ql-language-reference/indexing-arrays.html

...