Получить все уникальные ключи от объекта объектов, используя N1QL в Couchbase - PullRequest
1 голос
/ 29 июня 2019

Если у меня есть документы в Couchbase, у которых все есть свойство foo, которое является объектом объектов (всех полос), таких как:

{
    foo: {
        bar_1: {
            prop1: "hello",
            prop2: "world"
        },
        bar_2: {
            prop1: "i'm",
            prop2: "confused"
        }
    }
}

Используя N1QL, как я могу выбрать все уникальные бары (только ключ, а не значения бара)?

В настоящее время я использую SELECT DISTINCT RAW OBJECT_NAMES(foo) FROM ..., который возвращает массив массивов, каждый со списком ключей от каждого foo. Затем я разбираю это в C# string[][] и сглаживаю и делаю отчетливым.

DISTINCT означает, что если документы имеют одинаковые bars, они не дублируются, но часто это не так. Это означает, что в настоящее время у меня нет необходимости в выполнении кода в C#, где я уверен, что есть хороший способ сделать все это в N1QL.

1 Ответ

2 голосов
/ 01 июля 2019

UNNEST Массив

   SELECT DISTINCT RAW n
   FROM default d
   UNNEST OBJECT_NAMES(d.foo) AS n;
...