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

时间:2019-06-29 19:26:13

标签: database couchbase n1ql

如果我在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 个答案:

答案 0 :(得分:2)

UNNEST数组

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