3

このフォームのクエリで、neo4jに新しいノードを作成します。

cypher.get_or_create_indexed_node(index="person", key="name", value="Fred", properties={"level" : 1}

ただし、Fredにクエリを実行してプロパティを調べると、彼のレベル="1"/引用符付き/です。何かが彼の値を文字列に変換しているようです。これはそれほど重要ではありません---必要に応じて取得時に変換できます---次のような暗号クエリを実行しようとする場合を除きます...

start b = node:person("*:*") RETURN b.level, ID(b) ORDER BY b.level desc SKIP 5 LIMIT 5;

...b.levelが期待どおりに注文されていないことに気付きました。私は次のようなものを見ています:

==> +-------------------------+
==> | b.level         | ID(b) |
==> +-------------------------+
==> | "3"             | 42    |
==> | "0"             | 53    |
==> | "2"             | 57    |
==> | "0"             | 63    |
==> | "2"             | 20    |
==> +-------------------------+

私が次のようなものを期待するとき:

==> +-------------------------+
==> | b.level         | ID(b) |
==> +-------------------------+
==> | 3               | 42    |
==> | 2               | 20    |
==> | 2               | 57    |
==> | 0               | 63    |
==> | 0               | 53    |
==> +-------------------------+

リファレンスマニュアルにはスキップ/制限機能が示されているため、これはデータ型の問題だと思います。

すべての値が文字列である場合ですか、それとも入力に正しく追加する必要があるものが他にある場合ですか?

4

1 に答える 1

4

これは当てはまらないはずです。数値プロパティは完全にサポートされています。また、次のテストを使用してシナリオを再現することもできません。

def test_get_or_create_indexed_node_with_int_property(self):
    graph_db = neo4j.GraphDatabaseService()
    fred = graph_db.get_or_create_indexed_node(index="person", key="name", value="Fred", properties={"level" : 1})
    assert isinstance(fred, neo4j.Node)
    assert fred["level"] == 1
    graph_db.delete(fred)

get_or_create_indexed_nodeメソッドの前に-が付いていることに気付きcypherました。サイファーモジュールにはそのようなメソッドがないため、これは予期していません。代わりに、graph_dbまたはのようなものになると思いbatchます。多分これはタイプミスですか?

たぶん、あなたはあなたの周りのコードのいくつかをもっと共有することができますか?その周りの他の何かがあなたの結果に影響を及ぼしている可能性があります。

ニゲ

于 2012-12-12T08:21:38.000 に答える