Articles of neo4j

使用node.js在neo4j中导入CSV

我正在尝试使用node.js将csv文件导入neo4j 。 我必须将数据插入到多个collection/table ,所以我必须使用node.js脚本来插入数据。 但是我的问题是,插入csv数据时无法防止数据重复。 CSV数据示例: name ————- Afghanistan Afghanistan Aland Albania Albania Bangladesh Bangladesh index.js cp = require('child_process'); child = cp.fork(__dirname + "/background-import-csv-file.js"); child.on('message', function(msg) { console.log("background-insert-process said : ", msg); }); file = path.resolve(__dirname, `./file/simplemaps.csv`); child.send(file); 在background-import-csv-file.js ,我以两种不同的方式编写代码。 基于第一个承诺 ( background-import-csv-file.js ): cp = require('child_process'); csv = require('fast-csv'); Q = require('q'); DB = […]

在Neo4j中根据Where条件插入数据

我想插入基于其他lebel/collection 。 我有2个lebel/collection ( 单元,用户 ),他们之间有1个关系( Business ),我想根据他们的关系将数据插入到unit 。 我的密码查询如下: MATCH (u:Units)<-[:Business]-(s:Users) WHERE s.id = 'some-user-id' WITH count(u) as numOfUnit // return number of units connected with user // if numOfUnit is smaller then 2 // insert/merge new data into Units lebel/collection // with relation between them MERGE ( bu:Units {name:'some-name-01', info:'some-info-01' }) WHERE numOfUnit […]

小图的Neo4J在Ubuntu 16.04上使用了大量的内存

我已经在具有8GB和4核的Ubuntu 16.04虚拟机(Hyper-V)中安装了Neo4J v3.3.0(社区版)。 我有一个非常小的图(30节点),它只是用于阅读(每3秒约1次),它很less被写入。 我们想要扩展更多的图表,但是每三天(有时候会less一些)我们的服务器崩溃,因为Java占用了2GB以上的空间,而且顶部显示了300%的CPU使用率。 对我来说这是没有意义的,请问我可以让我知道如何configurationJava或Neo4J,以防止这种情况? 谢谢 我在/etc/neo4j/neo4j.conf文件中有以下configuration: dbms.query_cache_size=5000 dbms.threads.worker_count=4 dbms.memory.heap.initial_size=2g dbms.memory.heap.max_size=2g dbms.memory.pagecache.size=2g 发生这种情况时,日志文件显示以下错误: ERROR [onbvrcRunnableBoltWorker] Worker for session 'ecfe4a7f-1714-4ba3-9e98-a692bf153b45' crashed. Java heap space java.lang.OutOfMemoryError: Java heap space 也有这些可疑的消息(有很多): WARN [onkicMonitorGc] GC Monitor: Application threads blocked for 4680ms. ERROR [onbvtBoltMessagingProtocolV1Handler] Failed to write response to driver Unable to write to the closed output channel org.neo4j.bolt.v1.packstream.PackOutputClosedException: […]

与NodeJS和Neo4jasynchronous行为的问题

我是一个自学的新手程序员,使用Angular.js,Node.js和graphics数据库neo4j。 现在我试图得到一个非常基本的查询来执行并返回数据到客户端。 执行后,我得到一个closures服务器的错误。 接收到获取请求后执行以下function: exports.test = function (req, res) { var neo4j = require('neo4j'); var db = new neo4j.GraphDatabase('http://localhost:7474'); var query = [ 'MATCH n', 'RETURN n.name, n, labels(n)' ]; db.query(query, function (err, results) { if (err) {throw err}; var data = results.map(function(result) { return result; }); res.send(data) } )}; 我在控制台日志中得到以下错误:java.lang.ClassCastException:java.util.ArrayList不能转换为java.lang.String (我可以提供整个日志,如果它会certificate是有用的) 我将非常感激任何见解。

在graphenedb自动索引

如何在graphenedb 1.9.3 neo4j实例中启用和configuration节点自动索引? 我不认为我有权访问neo4j.properties文件。 我应该在应用程序中做这个工作吗? 谢谢, 埃迪

parsing树结果/得到儿童

我目前正在开发一个新的应用程序,我需要pipe理位置(大洲>国家>地区>城市)。 我试图(没有成功)使用密码从neo4j直接获取树: MATCH p = (r:Location)-[:CONTAINS*]->() WHERE r.category='continent' RETURN p AS path 现在,我想parsing这些数据,所以我可以这样做: MATCH (r:Location)-[:CONTAINS]->(r2) WHERE r.category='continent' OPTIONAL MATCH (r2)-[:CONTAINS]->(r3) OPTIONAL MATCH (r3)-[:CONTAINS]->(r4) OPTIONAL MATCH (r4)-[:CONTAINS]->(r5) OPTIONAL MATCH (r6)-[:CONTAINS]->(r6) RETURN r.name, r.category, r2.name, r2.category, r3.name, r3.category, r4.name,r4.category, r5.name, r5.category, r6.name, r6.category 但这不是我等待的回应,我不喜欢这个解决scheme,因为最多有6个关系。 如果我这样做,我冒险破坏树。 [ { 'r.name': 'Europe','r.category': 'continent','r2.name': 'Germany','r2.category': 'country','r3.name': null,'r3.category': null,'r4.name': null,'r4.category': null,'r5.name': null,'r5.category': […]

如何获取node-neo4j返回节点的数据只

我正在使用node-neo4j连接到neo4jgraphics数据库。 我注意到,每当我试图得到所有的节点(例如用户),json结果返回有太多的信息,我不需要。 以下是返回所有用户节点的代码: User.getAll = function (callback) { var query = [ 'MATCH (user:User)', 'RETURN user', ].join('\n'); db.query(query, null, function (err, results) { if (err) return callback(err); var users = results.map(function (result) { return new User(result['user']); }); callback(null, users); }); }; 它给了我这些json respsonse; [ { "_node": { "_nodeNeo4j": { "version": "1.1.0", "constructor": "Node" }, "_data": […]

neo4j – 查找所有与节点关系的节点,这些节点与x长度的属性值列表相匹配

更具体地说,我想要做下面的事情(使用node / JS,如果有帮助的话): 假设你有一个3个工作标准('JavaScript','PHP','MySQL')的列表。 我有一个graphics设置,其中每个Person节点可以连接到许多Skill节点。 我希望能够运行一个查询,该查询将返回至less有一个连接到查询中指定的所有技能节点的所有Person节点,然后按每个用户有多less正面连接进行sorting。 如果作业标准是一个variables,那么使这个查询工作的最有效的方法是什么? 这是我到目前为止。 再次,这工作,但我如何使OR语句variables? MATCH (n:Persons)-[r:KNOWS]-(x:Skill) WHERE x.name = 'PHP' OR x.name = 'JavaScript' OR x.name = 'MySql' RETURN DISTINCT n COUNT(n) ORDER BY COUNT(n) DESC

Neo4j,如何索引并给节点ID

我对neo4j有点新,我想用neo4j和nodejs开始构build一个应用程序。 据我所知,neo4j为每个创build的节点添加了id ,而这个id不应该在db外使用,这就意味着如果我有用户,那么用id来查看用户(创build用户时neo给出的id相同)不是这样聪明。 所以问题是: 什么将是最好的,为什么要找一个用户? 电子邮件? 可能是,但并不是应用程序中的每一件事都有一个像用户的电子邮件的唯一标识符 我看到几篇关于uuid ,让我们假设我正在使用它..我可以保存该字段与名称id保存吗? 或者我需要一些其他的名字? 如果我希望该字段用作索引,我是否需要做一些特殊的事情? (我希望通过id进行search的速度很快。) uuid生成一个非常长的string,是不是索引该string的开销? 索引数字更快,不是吗? 如果不使用uuid ,你认为是其他select?

Neo4J和其他数据库中唯一ID的最佳实践?

目前在我的Node.Js应用程序上运行Neo4J我使用node-uuid模块为我的数据库对象提供唯一的ID。 使用该模块的uuid.v1()函数,我得到了类似的东西 81a0b3d0-e4d0-11e3-ac56-73f5c88681be 现在,我的请求很长,有时在一个查询中有数百个节点和边。 所以你可以想象它们变得巨大,因为每个节点和边缘都必须有唯一的ID。 你知道如果我可以使用更短的ID系统,以便在我的项目数量增长后不会遇到任何问题吗? 我的意思是我知道我可以逃脱只有前8个符号(因为有36^8 > 2 Trl组合,但是它们随机生成时performance如何?随着节点数量的增加,机会是多less随机生成的ID不会落入已经存在的ID中? 另一个问题 – 如何交换当前的身份证系统到新的? 再生新的更短的ID最好的方法是什么? 谢谢!