Published
Edited
Apr 17, 2021
Importers
Insert cell
md`# Import All Data`
Insert cell
allNodeOriginal = buildDataArrayOriginal("MATCH (n) RETURN n")
Insert cell
allRelationshipOriginal = buildDataArrayOriginal("MATCH ()-[r:Assoc]->() RETURN r")
Insert cell
allNode = allNodeOriginal.records
Insert cell
allRelationship = allRelationshipOriginal.records
Insert cell
all = allNode.concat(allRelationship)
Insert cell
data = dealWithData()
Insert cell
md` # Function`
Insert cell
//Read from neo4j
function buildDataArrayOriginal(q) {
const session3 = driver.session();
const dataArrayOriginal = session3.run(q);
return dataArrayOriginal;
}
Insert cell
//Function to deal with data get one node or relationship one time
function dealWithData() {
var NodeIdArray = [];
var RelationshipIdArray = [];
var nodeArray = [];
var relArray = []
for (let index = 0; index < all.length; index++) {
var sample = all[index]._fields[0]
var id = sample.identity.low
if (sample.constructor.name === "Node") {
if (!(NodeIdArray.includes(id))) {
NodeIdArray.push(id)
if (sample.labels[0] === "Restaurant") {
var res = sample.properties
res["ID"] = id
res["Label"] = sample.labels[0]
nodeArray.push(sample.properties)
} else {
var otherNode = sample.properties;
nodeArray.push({name:otherNode[Object.keys(otherNode)[0]], ID: id, Label:sample.labels[0]})
}
}
} else {
if (!(RelationshipIdArray.includes(id))) {
RelationshipIdArray.push(id)
var link = sample.properties
link.ID = sample.identity.low
link.source = sample.start.low
link.target = sample.end.low
link.value = 1
relArray.push(sample.properties)
}
}
}
function addRadius(d) {
d["radius"] = relArray.filter(a => a.source === d.ID || a.target === d.ID).length;
return d;
}
nodeArray.map(addRadius);
var finalArray = buildDataArray(nodeArray, relArray);
return finalArray
}
Insert cell
//Combine node and relationship to one array
function buildDataArray(node, link) {
const dataArray = {nodes: node, links: link}
return dataArray;
}
Insert cell
md` # Neo4j Driver`
Insert cell
neo4j = {
const neo4j = await require('neo4j-driver');
return neo4j;
}
Insert cell
driver = neo4j.driver(
"neo4j+s://df82a806.databases.neo4j.io:7687",
neo4j.auth.basic("Reader", "Reader")
)
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more