使用Groovy完成Neo4j基本操作:启停数据库及事务,创建和修改节点,数据库遍历。
代码如下:
import org.neo4j.kernel.*
import org.neo4j.graphdb.*
ExpandoMetaClass.enableGlobally()
PropertyContainer.metaClass.getProperty = {name ->
??????????????????????? delegate.getProperty(name)}
PropertyContainer.metaClass.setProperty = {name,val ->
??????????????????????? delegate.setProperty(name,val)}
PropertyContainer.metaClass.getAt = {idx ->
??????????????????????? delegate.getProperty(name)}
db = new EmbeddedGraphDatabase("/sdb3/cur/data/neo1")
tx = db.beginTx()
createNode()
tx.success()
tx.finish()
db.shutdown()
def createNode() {
??? def node1 = db.createNode()
??? node1.message = 'Hello'
??? def node2 = db.createNode()
??? node2.message = 'world!'
??? def knows = DynamicRelationshipType.withName("KNOWS")
??? def rel = node1.createRelationshipTo(node2,knows)
??? rel.message = 'brave Neo4j'
??? println "${node1.message} ${rel.message} ${node2.message}"
}
db = new EmbeddedGraphDatabase("/sdb3/cur/data/neo1")
tx = db.beginTx()
findAllNodes()
tx.success()
tx.finish()
db.shutdown()
def findAllNodes() {
??? db.allNodes.each {node ->
??? ??? println "${node}:"
??? ??? node.getPropertyKeys().each {key ->
??? ??? ??? println "? ${key} = ${node[key]}"
??? ??? }
??? ??? node.getRelationships().each {rel ->
??? ??? ??? println "? has rel ${rel.getType().name()}"
??? ??? }
??? }
}
更多内容参见原文