0

同じタイプの関係によって他のノードと関連付けられたノードがある場合

classmetadata<-INSTANCE_OF-instance(TheNodeINeed)-RELATED_TO->...................

 - ->listype(The owner(name=d,etc))
 - ->listype(The state(name=x,etc))
 - ->listype(The propertie(name=y,etc))
 - ->listype(The location(name=z,etc))

検索するインスタンス ノードは、その名前 (これは簡単です) とインスタンス名 (これも簡単です)およびlistype .name=.. とlistype .name=..によって、インデックス内のノード classmetadata によって検索する必要があります。とlistype .name=.. そしてここに問題があります:

dという名前の所有者である MyInstance という名前インスタンスだけを探してみると、ここでは 1 つの listype ノードについてクエリするだけで問題ありません。このクエリは機能します。

START classmetadata = node:classes(name = "MyClassMetadata")
MATCH classmetadata<-[:INSTANCE_OF]-instance-[:RELATED_TO]->listype
WHERE instance.name="MyInstance" and listype.name = "d"
RETURN instance, listype
ORDER BY instance.name ASC skip 0 limit 10

しかし、名前dの所有者である MyInstance という名前インスタンスを探す必要がある場合、名前xの状態に関連し、名前yのプロパティにも関連している場合、クエリの結果が常に空になるという問題があります。それらが同じタイプの関係によって関連している場合、約2つまたは3つ以上のnodes.properties(listype.name)を同時にフィルタリングする方法はありますか?

このようなものは機能していません

START classmetadata = node:classes(name = "MyClassMetadata")
MATCH classmetadata<-[:INSTANCE_OF]-instance-[:RELATED_TO]->listype
WHERE instance.name = "MyInstance" AND listype.name = "x"
AND listype.name = "y" AND listype.name="d" RETURN instance, listype
ORDER BY instance.name ASC skip 0 limit 10
4

2 に答える 2

1

正しいノードでフィルタリングを行っていることを確認するために、各リレーションシップに name プロパティを追加しました。

START classmetadata = node:classes(name = "MyClassMetadata")
MATCH classmetadata<-[:INSTANCE_OF]-instance-[r1:RELATED_TO]->listype1,
instance-[r2:RELATED_TO]->listype2, 
instance-[r3:RELATED_TO]->listype3 

WHERE instance.name = "MyInstance" AND 
r1.name="state" AND listype1.name = "x" AND 
r2.name="property" AND listype2.name = "y" AND 
r3.name="owner" AND listype3.name="d" 
RETURN instance, listype
ORDER BY instance.name ASC skip 0 limit 10
于 2012-07-07T04:00:48.333 に答える
0

listtype の name プロパティが d または x または y (最初のコード スニペット) であるすべての listtypes を見つけたいですか? その場合、START classmetadata = node:classes(name = "NodeType ") MATCH classmetadata<-[:INSTANCE_OF]-instance-[:RELATED_TO]->listype WHERE instance.state="good" and (not(listype.name in ["d","x","y"])) RETURN インスタンス、listype ORDER BY instance.name ASC スキップ 0 制限 10

上記のクエリも機能します...一様にlisttypeを参照するだけです-listtype1、listtype2などは必要ありません.START classmetadata = node:classes(name = "NodeType ") MATCH classmetadata<-[:INSTANCE_OF]-instance-[:RELATED_TO ]->listype WHERE instance.state="good" と listype.name! =~ ". Po. " AND listype.name! =~ ". Me. " RETURN インスタンス、listype ORDER BY instance.name ASC スキップ 0 制限 10

それはあなたが探しているものですか?

于 2012-07-05T03:15:02.400 に答える