在 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;
如果我在 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;