Cypher 查询
在 Java 中,您可以使用 Cypher 查询语言,示例如下。
|
示例的源代码可在以下位置获取: JavaQuery.java |
首先,您可以添加一些数据
DatabaseManagementService managementService = new DatabaseManagementServiceBuilder( databaseDirectory ).build();
GraphDatabaseService db = managementService.database( DEFAULT_DATABASE_NAME );
try ( Transaction tx = db.beginTx())
{
Node myNode = tx.createNode();
myNode.setProperty( "name", "my node" );
tx.commit();
}
执行查询
try ( Transaction tx = db.beginTx();
Result result = tx.execute( "MATCH (n {name: 'my node'}) RETURN n, n.name" ) )
{
while ( result.hasNext() )
{
Map<String,Object> row = result.next();
for ( Entry<String,Object> column : row.entrySet() )
{
rows += column.getKey() + ": " + column.getValue() + "; ";
}
rows += "\n";
}
}
在本例中,您还可以看到如何遍历 org.neo4j.graphdb.Result 的行。
代码将生成
n: Node[0]; n.name: my node;
|
在使用 |
处理结果的推荐方式是使用 try-with-resources 语句。这可确保在语句结束时关闭结果。
您还可以获取结果中的列列表
List<String> columns = result.columns();
这给您提供了
[n, n.name]
使用以下方法从单列中获取结果项。 在这种情况下,您必须从节点读取属性,而不是从结果读取。
Iterator<Node> n_column = result.columnAs( "n" );
n_column.forEachRemaining( node -> nodeResult = node + ": " + node.getProperty( "name" ) );
在此情况下,结果中只有一个节点
Node[0]: my node
仅在结果仅包含单列或您只关心结果的单列时使用此方法。
|
|
欲了解更多关于 Cypher 的 Java 接口信息,请参阅 Neo4j Javadocs。
欲获取更多关于 Cypher 的信息和示例,请参阅 Neo4j Cypher 手册。