2016-10-17 11 views
0

私は、クエリのNeo4j 3.0.1 1要素のコレクションのサイファークエリ返すコレクション

match (x) 
where x.property in [40,44] 
with collect(distinct x.property) as xproperty 
return xproperty 

を発行する場合、私は値(例えば[40,44])のコレクションを取得

しかし、私の場合句での "x" を追加します。

match (x) 
where x.property in [40,44] 
with x, collect(distinct x.property) as xproperty 
return xproperty 

私は1つの要素のコレクションのコレクションを取得します(たとえば、[[40]、[44]]

with節のxの位置は重要ではなく、xにwith節のエイリアスも与えません。

これはNeo4jの問題ですか、それとも私の事がどのように機能するのかについての理解に問題がありますか?

答えて

2

COLLECT()アグリゲーションの理解に問題があります。 WITH x, COLLECT(DISTINCT x.property)を指定するときは、それぞれ xの値のリストを作成するように求められます。x.propertyこのリストはもちろん、それぞれの場合に1つの要素長です。最初のクエリでは、xのような集計キー(集約されていない値)は提供されないため、可能なすべての一意の値x.propertyを単一のコレクションに置き、このコレクションを単一の行として返します。

RETURNまたはWITHの間に集計する場合は、結果行のリストを変換していることに注意してください。繰り越されたすべてのオブジェクトまたは式は、生成された行に含まれます。したがって、x値を持つ2つの行がある場合は、xを含むWITH句の後に2行を取得します。集約は、すべての集約されていないフィールドを取って、各フィールドの値を(「集約キー」と呼ばれます)とし、各組み合わせに対して1つの行を返します。 元の行

関連する問題