gremlin クエリの作成中に奇妙な結果が得られます。ノードのほとんどの属性に has 関数を喜んで使用できます。しかし、属性 id で has 関数を使用しようとすると、true が返されません。たとえば、" ().has('id', 'v5086').property('id')" は結果を返しません。なぜこれが起こっているのか誰にも分かりますか?
ありがとう。
内部的に、Neo4j はすべての ID をjava.lang.Long
オブジェクトとして保存します。id
これはプロパティのみの特別な動作です。他のすべてのプロパティは、暗黙のデータ型で格納されます。これが が機能する理由ですhas('name', 'VerisignCzagExtension')
(プロパティは、 を対象としたこの特別な動作から除外されるため)。は に型キャストされていると想定しているため、実際の値が失われます。これは、 Gremlin のステップの後にゼロの結果を説明できる可能性があります。name
id
v5086
java.lang.Long
has('id', 'v5086')
私の知る限り、id
プロパティは不変です(変更できません)。id
Gremlin ステップを使用して頂点を検索する必要がある場合、頂点が値として保存されていると仮定するのとhas
同じように見えます。エクストラは明示的な型キャストのためのものです.Neo4jは、それを追加しないと想定し、Gremlinステップは再びゼロの結果になります.has('id', 5086L)
id
5086
java.lang.Long
L
java.lang.Long
java.lang.Integer
L
最後に、名前付き ID を別の名前 ( key を持つプロパティなど) にしたい場合がありますname
。
お役に立てれば。