在 Couchbase 中使用 N1QL 从对象的对象获取所有唯一键

Get all unique keys from object of objects using N1QL in Couchbase

如果我在 Couchbase 中有文档,它们都有一个 属性 foo,它是对象的对象(所有条),如下所示:

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

使用 N1QL 我怎样才能 select 所有唯一的条形图(只是键而不是条形图的值)?

我目前正在使用 SELECT DISTINCT RAW OBJECT_NAMES(foo) FROM ...,其中 returns 一个数组数组,每个数组都有来自每个 foo 的键列表。然后我将其解析为 C# string[][] 并将其展平并使其与众不同。

DISTINCT 意味着如果文档具有完全相同的 bars,则它们不会重复,但通常情况并非如此。这意味着我目前在 C# 中有不需要的代码执行,我确信在 N1QL 中有一个很好的方法来完成这一切。

UNNEST 数组

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