1

gremlin クエリの作成中に奇妙な結果が得られます。ノードのほとんどの属性に has 関数を喜んで使用できます。しかし、属性 id で has 関数を使用しようとすると、true が返されません。たとえば、" ().has('id', 'v5086').property('id')" は結果を返しません。なぜこれが起こっているのか誰にも分かりますか?

ありがとう。

4

1 に答える 1

2

内部的に、Neo4j はすべての ID をjava.lang.Longオブジェクトとして保存します。idこれはプロパティのみの特別な動作です。他のすべてのプロパティは、暗黙のデータ型で格納されます。これが が機能する理由ですhas('name', 'VerisignCzagExtension')(プロパティは、 を対象としたこの特別な動作から除外されるため)。は に型キャストされていると想定しているため、実際の値が失われます。これは、 Gremlin のステップの後にゼロの結果を説明できる可能性があります。nameidv5086java.lang.Longhas('id', 'v5086')

私の知る限り、idプロパティは不変です(変更できません)。idGremlin ステップを使用して頂点を検索する必要がある場合、頂点が値として保存されていると仮定するのとhas同じように見えます。エクストラは明示的な型キャストのためのものです.Neo4jは、それを追加しないと想定し、Gremlinステップは再びゼロの結果になります.has('id', 5086L)id5086java.lang.LongLjava.lang.Longjava.lang.IntegerL

最後に、名前付き ID を別の名前 ( key を持つプロパティなど) にしたい場合がありますname

お役に立てれば。

于 2012-12-26T13:41:25.797 に答える