最近一个项目需要用到知识图谱,选用了neo4j图数据库,在这过程中遇到几个坑,记录一下

1.无法登录,疯狂提示“WebSocket connection failure. Due to security constraints in your web browser”

我的测试环境是在docker中运行的,google的办法都是改配置文件中的监听地址什么的,最后也没能找到解决办法。阴差阳错换回3.5.16版本就好了。这个问题我也不确定问题根源,并不是说4.0版本就一定会有这个问题。

2.neo4jClient建立节点,建立关系

种种原因,写数据到neo4j的程序是c#写的。比较常见的驱动有两个,一个是官方的neo4j-dotnet-driver,另一个是第三方的Neo4jClient. 我用的是第三方这个。

最有用的官方文档就这一篇:https://github.com/Readify/Neo4jClient/wiki/cypher-examples

同类型节点建立关系没有问题,比如Person1认识Person2这种,在“Relate two existing users”这块很详细了。

问题就出在非同一类型的节点建立关系的时候,比如Person1拥有Book1这样,使用官方那个sample是不行的。搜遍全网也没找到解决方案,这里记录一下。

如果按照官方文档来写Cypher,是这样的(以官方movie数据库为例)。

MATCH (p:Person), (m:Movie)
WHERE p.name="J.T. Walsh" , m.title="Unforgiven"
CREATE (p)-[r:ACTED_IN]->(m)
return r

执行结果会报错

正确的是这样

MATCH (p:Person), (m:Movie)
WHERE p.name="J.T. Walsh" and m.title="Unforgiven"
CREATE (p)-[r:ACTED_IN]->(m)
return r

与官方文档中同类型节点不同的是,where条件中两个条件中的逗号,改为 "and"

使用Neo4jClient写入的话,同样需要修改一下。

官方sample:

graphClient.Cypher
.Match("(user1:User)", "(user2:User)")
.Where((User user1) => user1.Id == )
.AndWhere((User user2) => user2.Id == )
.Create("user1-[:FRIENDS_WITH]->user2")
.ExecuteWithoutResults();

正确写法(注意CreateUnique后面的d和s必须用小括号包起来,不然也是疯狂报错

 _graphClient.Cypher
.Match("(d:Person)", "(s:Movie)")
.Where((Person d) => d.name =="aaa")
.AndWhere((Movie s) => s.name == "bbb")
.CreateUnique("(d)-[:ACTED_IN{rel}]->(s)")
.WithParam("rel", new { name="扮演" })
.ExecuteWithoutResults();

当然,如果关系不需要有属性的话是这样的,去掉rel就可以了

                             _graphClient.Cypher
.Match("(d:Person)", "(s:Movie)")
.Where((Person d) => d.name =="aaa")
.AndWhere((Movie s) => s.name == "bbb")
.CreateUnique("(d)-[:ACTED_IN]->(s)")
.ExecuteWithoutResults();

目前就这些小坑

Neo4j填坑记录-Neo4jClient建立节点、建立关系相关的更多相关文章

  1. webapp填坑记录[更新中]

    网上也有许多的 webapp 填坑记录了,这几个月,我在公司正好也做了2个,碰到了一些问题,所以我在这里记录一下我所碰到的问题: meta 头部声明在开发的时候,刚刚创建 HTML 文件,再使用浏览器 ...

  2. webapp填坑记录

    网上也有许多的 webapp 填坑记录了,这几个月,我在公司正好也做了2个,碰到了一些问题,所以我在这里记录一下我所碰到的问题: meta 头部声明在开发的时候,刚刚创建 HTML 文件,再使用浏览器 ...

  3. Phoenix踩坑填坑记录

    Phoenix踩坑填坑记录 Phoenix建表语句 如何添加二级索引 判断某表是否存在 判断索引是否存在 Date类型日期,条件判断 杂项 记录Phoenix开发过程中的填坑记录. 部分原文地址:ph ...

  4. Kafka踩坑填坑记录

    Kafka踩坑填坑记录 一.kafka通过Java客户端,消费者无法接收消息,生产者发送失败消息 二. 一.kafka通过Java客户端,消费者无法接收消息,生产者发送失败消息 在虚拟机上,搭建了3台 ...

  5. Linux踩坑填坑记录

    Linux踩坑填坑记录 yum安装失败[Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'mirrors.aliyun.com'" ...

  6. F2eTest和uirecorder自动化测试环境部署填坑记录

    坑1:尝试部署的时候只在opennode.bat里面填写了两个浏览器,测试通过后再增加其他浏览器,页面上一直不显示. 填坑:需要清空数据库里的`wd_browsers`和`wd_nodes`表,然后重 ...

  7. 微信小程序发送红包功能。填坑记录

    微信官方文档 1.开通条件 (1)商户号已入驻90日 (2)商户号有连续30天正常交易 (3)只有企业资质的商户才有资格申请 2.注意事项 (1)目前小程序红包仅支持用户微信扫码打开小程序 (2)小程 ...

  8. MVC5项目转.Net Core 2.2学习与填坑记录(1)

    流程都是自己摸索,错误地方随便指正... 老项目过于臃肿,并且所有请求都是提交到一个api中,这样当api挂掉的时候,基本所有的项目都瘫痪掉了. 在4月底的时候,下决心将项目用微服务进行重写,刚开始的 ...

  9. iOS工作小技巧及填坑记录

    以下是本人在iOS开发工作中使用的一些小技巧,记录一下. 1.使用XXX.pch文件便捷开发+加速Build 在IOS开发的项目中有一个XX_Prefix.pch XX_Prefix.pch:扩展名. ...

随机推荐

  1. stand up meeting 11/19/2015

    队员 今日工作 工作耗时/h 明日计划 计划耗时/h 冯晓云 利用昨天编写的调用必应词典API的DLL,完成了UWP版本查词APP的试水,证实了DLL可调和在线查词的可行性:和其他部分的同学就接口数据 ...

  2. Bi-shoe and Phi-shoe LightOJ - 1370

    欧拉函数. 欧拉函数打表模板: #define maxn 3000010 int p[maxn]; void oula(){ int i,j; ; i<=maxn; i++) p[i]=i; ; ...

  3. 将函数作为返回值的方法 - Python

    有的时候,我们需要将函数作为返回值,以下为代码: def superfunc(): i = 0 def wrapper(): nonlocal i i +=1 return i return wrap ...

  4. 6. 浅谈super

    this和super: super( ) EX6类的继承, 在react中官方固定应用 在java面向对象思想中这样定义: this表示当前对象,this()为当前对象的其他构造函数 super表示父 ...

  5. 1. git 本地给远程仓库创建分支 三步法

    命令如下: 1:本地创建分支dev 1 2 Peg@PEG-PC /D/home/myself/Symfony (master) $ git branch dev 2:下面是把本地分支提交到远程仓库 ...

  6. 如何将Python项目发布到PyPI

    The Python Package Index (PyPI) is a repository of software for the Python programming language. 如何打 ...

  7. Python修改paramiko模块开发运维审计保垒机

    目前市面上,专门做IT审计堡垒机的厂商有很多,他们的产品都有一个特点,那就是基本上每台的售价都在20万以上.像我们做技术的,不可能每次待的公司都是大公司,那么在小公司,是不太可能投资20多万买一台硬件 ...

  8. Codeforces 1340B Nastya and Scoreboard(dp,贪心)

    题目链接OvO 题目大意   给你\(n\)串数字,\(1\)代表该位置是亮的,\(0\)代表是灭的.你必须修改\(k\)个数字,使某些\(0\)变为\(1\).注意,只能把原来的\(0\)改成\(1 ...

  9. spring源码阅读笔记09:循环依赖

    前面的文章一直在研究Spring创建Bean的整个过程,创建一个bean是一个非常复杂的过程,而其中最难以理解的就是对循环依赖的处理,本文就来研究一下spring是如何处理循环依赖的. 1. 什么是循 ...

  10. Zookeepe的安装和集群的配置

    Zookeepe的安装和集群的配置 一.Zookeeper的简介 Zookeeper是个框架 二.Zookeeper在Linux上安装 官方提供的下载服务器 地址1:http://mirror.bit ...