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 手册。