我正在向我的neo4j数据库添加迭代数据,但我仍然坚持如何覆盖或更新现有数据并检查数据是否已存在于那里.
基本上我有一组带有相应id的电影,例如:
[
{id: 'gameofthrones', genre: 'fantasy', release: '2017'},
{id: 'inception', genre: 'scifi', release: '2010'},
...
]
Run Code Online (Sandbox Code Playgroud)
我可以按如下方式添加电影:
CREATE
(m1:Movie {id: 'gameofthrones', genre: 'fantasy', release: '2017'}),
(m2:Movie {id: 'inception', genre: 'scifi', release: '2010'})
Run Code Online (Sandbox Code Playgroud)
但是,当我运行脚本两次时,它会创建4个节点,而不是将其保留在两个节点上.
所以我的问题是,我如何确保它检查节点id
是否已经存在,如果是这样,则覆盖它而不是创建新节点?
我试过(但只添加了属性)
// data
attributes['id'] = 'gameofthrones';
attributes['genre'] = 'fantasy';
...
// query
MERGE ( s:Movie {attributes}.id)
ON CREATE SET ( s:Movie {attributes} )
Run Code Online (Sandbox Code Playgroud)
我打电话NodeJS
如下:
executeQuery(queryStr, {"attributes": attributes})
// cypher (nodejs)
function executeQuery(queryStr, params) {
var qq = Q.defer();
db.cypher({
query: queryStr, …
Run Code Online (Sandbox Code Playgroud) 我使用Node.js连接到托管的GrapheneDB Neo4j数据库,当试图添加大约1,500条记录时,我收到以下错误:
LockClient[19] can't wait on resource
RWLock[NODE(248), hash=1917331445] since => LockClient[19]
<-[:HELD_BY]- RWLock[INDEX_ENTRY(153122458561043471), hash=1171319680]
<-[:WAITING_FOR]- LockClient[15] <-[:HELD_BY]- RWLock[NODE(248), hash=1917331445]
Run Code Online (Sandbox Code Playgroud)
生成此代码的代码来自一个获取JSON对象列表然后将它们存储在Neo4j中的路由.导入大约1,500条记录时,我会始终如一地得到此错误.
使用seraph-model进行数据库访问并只查找记录,更新是否存在或创建它(如果不存在).
有什么建议在哪里调查?
我没有图形数据库应用程序的经验,但我正在尝试编写一个.我打算主持Heroku
.
我可以看到有2个图表数据库服务提供商有免费计划,但我无法决定使用哪一个,他们都使用不同的属性进行营销,我无法比较!例如:
GrapheneDB仅提及节点和关系计数限制以及查询时间限制.但没有关于存储限制.
Graph Story提到了RAM限制,"存储限制和数据传输限制".
还提到了其他属性,但两个提供商之间无法比较.
有没有人尝试过任何这些服务Heroku
并且可以分享他的经验吗?
编辑:我找到了这个页面,它提供了neo4j需要多少空间的想法.