Tag: neo4j

在Javascript中的Neo4j:参数不能查询

使用thingdom的neo4j插件时遇到了麻烦。 看起来插件不能识别{mlabel}和{mdata}作为占位符。 代码和错误如下。 非常感谢你! var query = [ 'CREATE (p:{mlabel} {{mdata}})', 'RETURN p' ].join('\n'); var params = { mlabel : 'person', mdata : { name: 'Pete', surname: 'Strutton', age: 35 } }; this.db.query(query, params, function (err, results) { if (err) throw err; return result; }); Error: Invalid input '{': expected whitespace or a label name […]

Neo4j插入具有各种关系的节点

我试图创build“配方”,“成分”和“用户”节点(作者)。 基本上,作者可以有很多的食谱; 和食谱有成分多对多的关系。 我有这个查询: MATCH (user:User) WHERE ID(user) = {uid} CREATE (recipe:Recipe {name:"receta 4"}) WITH ingredient MATCH (ingredient:Ingredient) WHERE ID(ingredient) = node(7) CREATE (recipe)-[ri:HAS {unit: "vasos", cant: 1}]-(ingredient) WITH ingredient MATCH (ingredient:Ingredient) WHERE ID(ingredient) = node(6) CREATE (recipe)-[ri:HAS {unit: "cditas", cant: 2}]-(ingredient) CREATE (user)-[:PREPARE]->(recipe) RETURN recipe 但是,我得到错误: ingredient not defined (line 4, column 7) "WITH […]

Express.js和Neo4j

我见过很多关于如何整合express.js和mongodb的例子。 有谁知道整合neo4j和express.js的好方法吗? 我一直在玩node-neo4j,并且能够将密码查询返回给terminal。 然而,我很困惑如何将密码查询(以json格式)发布到本地主机。 谢谢你的帮助。

Neo4j仅当where子句总是为真时才返回一个节点

考虑下面的Neo4j数据库例子: 节点是(篮子)(预订)和[:IS_BOOKED_IN] 现在预订看起来像这样: Booking {start:number,end:number} 如果您预定了某个东西,您可以select要预订哪个篮子,并在这两者之间创build关系[:IS_BOOKED_IN]。 这工作得很好。 现在我想检查我的下一个预订,如果任何篮子可用的时间框架,我select。 现在我正在用Cypher来做这个查询: MATCH(basket:Basket) – [:IS_BOOKED_IN] – >(booking:Booking)WHERE({start} <booking.start AND {end} <booking.start)OR({end}> booking.end AND {start}> booking.end)返回篮子 {开始}和{结束}是数字 正如你所看到的,这将会像预期的那样工作,但前提是只有一个预订。 只要有更多的预订,我会得到相同的篮子,即使它显然不可用,从而使我的查询无用。 发生这种情况是因为在WHERE子句失败时查询不会停止,而是再次使用相同的Basket节点,并检查其他预订,这些预订不会失败,然后将我退还给篮子。 我怎么能改变这个,如果WHERE子句总是正确的,我怎么能告诉Neo4j只返回篮子给我? 或者只是一次失败就跳过篮子。 任何想法表示赞赏,谢谢

可选匹配不返回结果

当我在neo4j浏览器(localhost:7474 / browser)中启动这个查询时, match (s:Song) optional match (sg:SongGroup)-[r:SONGGROUP_SONG]->(s) where id(sg) = 294 return sg.title , s.title …我得到这个(sg.title和s.title都有数据) sg.title s.title test 3 Shake it off …. ….. 当我将相同的查询推入nodejs中的此函数(使用npm请求模块)时: function cypherQuery(query, params, callback) { request.post({ uri : 'http://localhost:7474/db/data/cypher', json : {query: query, params: params} }, function(err, res, body) { callback(err, body); }); …我得到这个:(只有s.title有数据) { columns: [ 's.title', […]

Cypher查询返回匹配节点和可选关系

我试图find返回所有匹配的节点和他们可能有的任何关系的最优方法? 这是我的问题: 我需要返回创build项目的所有用户,所以 match (u : User)-[r:CREATE]->(p: Project) return u, collect(p) 很简单,但用户也可以有其他的关系,我想包括他们或可选的检查(返回true / false) 例如用户可能有关系build议,我不想限制它,但如果检查它是否存在一个什么节点? 理想情况下,我的回报表如下所示: USER1 – PROJECT(S) – 推荐用户 USER2 – PROJECT(S) – NULL(无人推荐)

Neo4j会话.catch错误:结构(127,])

当我在nodejs中执行这个命令时,我得到一个.catch错误“catch error:structure(127,[[object object]])”。 它在Neo4j浏览器中工作正常。 任何人都可以点亮这个? 我似乎无法find这种types的错误的任何参考。 session .run ("MERGE (user:Visitor {name:'Visitor', email : {paramEmail}})-[:SUBMITTED_RPA {since:timestamp()}]->(rpa:RPA {name: 'RPA', email:{paramEmail},rpa_id:{paramrpa_id}, makevehicle:{parammakeVehicle},vehicledescription:{paramvehicledescription},partdescription:{parampartdescription}}) RETURN user,rpa", { paramEmail: newUser.email, parammakevehicle: newUser.makevehicle, paramvehicledescription: newUser.vehicledescription, parampartdescription: newUser.partdescription, paramrpa_id: newUser.rpa_id })

不能使用KOA-NEO4J库来传递参数

我正在尝试创build一个连接到NEO4J实例的REST API。 我使用koa-neo4j库作为基础( https://github.com/assister-ai/koa-neo4j-starter-kit )。 下面的第一个例子工作正常。 当我打到端点“myapp / metric”时,我从数据库中得到预期的结果。 Index.js //Return all metrics from the database app.defineAPI({ method: 'GET', route: '/api/v1/imm/metric', cypherQueryFile: './src/api/v1/imm/metric/metric.cyp' }); metric.cyp MATCH (a:metric) RETURN a AS metric 我试图build立在这个例子创build一个端点,我可以传递一个参数,将在密码查询中使用我跟随了文档,并结束了下面。 Index.js //Return all metrics from the database matching a specific metric name app.defineAPI({ method: 'GET', route: '/api/v1/imm/metric/:metricname', cypherQueryFile: './src/api/v1/imm/metric/metric-by-name.cyp' }); 指标按name.cyp MATCH (a:metric […]

使用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 […]