2

neo4j_run APIを使用するとマップを入力できますが、クエリの構文がわかりません。Python では、これは単純な{x}. neo4j_map構文の例が見つかりません。

const char *q = "MATCH (p:Person) WHERE p.age > {age} RETURN p.name AS name, p.age as AGE";
neo4j_run(session, q, my_map)

どのように (a) 構成my_mapし、(b) クエリ内のフィールドを示す必要がありますか?

更新: 最初の部分では、このテストはマップの作成方法を示しています。わかりやすくするためにここにコピーします。

START_TEST (invalid_map_value)
{
    neo4j_map_entry_t map_entries[] =
        { { .key = neo4j_string("bernie"), .value = neo4j_int(1) },
          { .key = neo4j_int(1), .value = neo4j_int(2) } };
    neo4j_value_t value = neo4j_map(map_entries, 2);
    ck_assert(neo4j_is_null(value));
    ck_assert_int_eq(errno, NEO4J_INVALID_MAP_KEY_TYPE);
}
END_TEST
4

1 に答える 1

2

の 3 番目の引数として渡されるマップはneo4j_run、クエリのパラメーターです。マップの作成には、エントリの配列とその長さが必要です。エントリ マップが 1 つだけの場合は、ポインタを 1 つに渡すことができますneo4j_map_entry_t。あなたの例:

const char *q = "MATCH (p:Person) WHERE p.age > {age} RETURN p.name AS name, p.age as AGE";
neo4j_map_entry_t map_entry = neo4j_map_entry("age", 28);
neo4j_value_t params = neo4j_map(&map_entry, 1);

neo4j_run(session, q, params);

複数のパラメータがある場合は、マップ エントリの配列を作成します。次に例を示します。

const char *q = "MATCH (p:Person) WHERE {min_age} < p.age < {max_age} RETURN p.name AS name, p.age as AGE";
neo4j_map_entry_t map_entries[2];
map_entries[0] = neo4j_map_entry("min_age", 28);
map_entries[1] = neo4j_map_entry("max_age", 30);
neo4j_value_t params = neo4j_map(map_entries, 2);

neo4j_run(session, q, params);

コピーしたテスト例のように、初期化子を使用して map_entry_t を構築することもできます。しかし、通常はneo4j_map_entryコンストラクターを使用する方が明確です。

于 2016-10-24T07:12:13.347 に答える