我试过了:
match (n:MyNode) remove n.*
Run Code Online (Sandbox Code Playgroud)
但这不起作用.上下文:我想基本上用新数据重新定义节点,而不是删除它(这意味着我也必须删除它的所有链接)并再次创建它,我想删除属性并设置我的新值.我不想只设置新值,因为应该删除不再使用的属性
顺便说一句,我知道我可以通过keys函数获取节点的属性,但我无法弄清楚如何将它用于我的目的:
match (n:MyNode) remove keys(n)
match (n:MyNode) remove n[keys(n)]
Run Code Online (Sandbox Code Playgroud)
不确定如何取消引用返回的数组以删除属性
我读到使用Neo4j内部Ids用于外部目的并不是一个好习惯.
我想我在SDN4/Neo4j应用程序中犯了一个错误,因为我到处都在使用内部ID.
我的应用程序中的每个SDN 4节点实体都具有以下属性:
@GraphId
private Long id;
Run Code Online (Sandbox Code Playgroud)
我使用这个long值作为我的Web应用程序URL的一部分..例如
/products/3245234
Run Code Online (Sandbox Code Playgroud)
其中3245234是此产品节点实体的内部Neo4j标识符.
从Neo4j的角度来看是否安全 - 以这种方式使用内部ID?如果不是,请举例说明新的代理键如何解决这个问题.
我使用下面的代码返回来自特定节点(id(65))的3个面向内的边的所有节点,并在apoc.map.fromPairs过程的帮助下将结果格式化为JSON Graph.如果没有距离起始节点3个边缘的节点,则会收到错误.
当我包含OPTIONAL语句时,似乎apoc.map.fromPairs过程会抛出针对用于模式缺失部分的"null"运行的下面的错误.
无法调用函数
apoc.map.fromPairs:引起:java.lang.NullPointerException
任何建议我如何克服这一点.我尝试编写一个CASE语句来检查地图中是否有任何键但是无法使其工作.
*******************************************************************************************
// **
// ** Author: MOS
// ** Date: 02/03/2017
// ** Description: Returns all nodes and relationships that are within 3 inward
// ** hops of the requested node. The response is formatted as Graph JSON.
// **
// *******************************************************************************************
OPTIONAL MATCH (l0) <-[r1]- (l1) <-[r2]- (l2) <-[r3]- (l3)
WHERE ID(l0) = 65
WITH [
{
id: id(l0),
label: labels(l0),
type:"",
metadata: apoc.map.fromPairs([key IN keys(l0) | [key, l0[key]]])
},
{
id: …Run Code Online (Sandbox Code Playgroud) 我正在实现基于游标的分页,它有一个hasNextPage,所以如果一个查询有类似的东西LIMIT 20,你将如何返回布尔值是否还有更多的节点适合MATCH?
我正在学习多个教程并且都演示了相同的Cypher查询,所以它必须是正确的,但我收到以下错误:
Neo.ClientError.Statement.SyntaxError未知的过程输出:
node
码:
call spatial.addWKTLayer('geom', 'wkt')
------- THEN --------
MATCH (v:Venue) WITH collect(v) as venues
CALL spatial.addNodes('geom', venues)
YIELD node
RETURN count(*)
Run Code Online (Sandbox Code Playgroud) 我有一个Spring Data Neo4j应用程序需要对Neo4j Community Edition(3.2)进行批量数据写入/读取.
我的系统配置(Macbook pro)16GB RAM,2.5 GHz Intel Core i7.
总节点:120,000.(每个节点有5个属性.)
我每个节点有500个关系.
上面的节点/关系是我需要的其他应用程序部分工作所需的初始数据的一部分.
我使用Spring Data Neo4j进行读/写事务.每个节点按顺序构建其对应的500个关系.显然,构建所有上述节点和关系需要花费大量时间.
示例代码:
实体:
//Neo4j entity class
import org.neo4j.ogm.annotation.GraphId;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;
@NodeEntity
public class SamplePojo {
@GraphId
public Long id;
private String property1;
private String property2;
private Integer property3;
private Double property4;
private Integer property5;
@Relationship(type="has_sample_relationship",direction="OUTGOING")
List<SamplePojo> sampleList = new ArrayList<>();
//Getters and setters...
}
Run Code Online (Sandbox Code Playgroud)
库:
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.neo4j.repository.GraphRepository;
@Repository
public interface SamplePojoRepository extends GraphRepository<SamplePojo> …Run Code Online (Sandbox Code Playgroud) 在Ubuntu 16.10上,我遵循了以下指令:
https://github.com/neo4j-examples/movies-java-spring-data-neo4j-4
但是当我去http:// localhost:8080 /并尝试搜索例如Matrix没有任何反应时,它只是看起来是空的:
我已经验证neo4j db已经填充了所需的数据,我还更新.properties了maven项目中的文件中的user/pass .
任何想法,是否有可能在某处找到日志?
在Firefox中按F12可以:
如下面的答案中所述,指示来源中的错误,但在按下F12时无法在Chrome中获得相同的错误信息.
我想向Neo4j插入数十亿个节点和关系。尽管我有16GB的RAM,但由于工作内存已超载,浏览器(Chrome)在30分钟后取消了“ LOAD CSV”的使用。
显然,可以使用批处理导入器将大型数据集导入Neo4j(文档和下载,Linux解释)。
要简单地使用它(不需要source / git / maven):
1. download 2.2 zip
2. unzip
3. run import.sh test.db nodes.csv rels.csv (on Windows: import.bat)
4. after the import point your /path/to/neo4j/conf/neo4j-server.properties
to this test.db directory, or copy the data over to your server cp -r
test.db/* /path/to/neo4j/data/graph.db/
You provide one tab separated csv file for nodes and one for
relationships (optionally more for indexes)
Run Code Online (Sandbox Code Playgroud)
我很难在Windows上使用该插件。在Rik Van Bruggen的Linux视频中(上面的链接),他提到“批处理导入程序的安装”。
我解压缩了文件“ download 2.2 zip”。我在另一个文件夹中有CSV文件。如何使用Windows文档中提到的“ import.bat”命令?在cmd中找不到命令...
我注意到了,match(a:Vegetable{name:'Cellery'}) return a并match(a:Vegetable) where a.name='Cellery' return a得到了相同的结果。
两者之间是否有实际区别?当您知道属性值时,第一种形式似乎可以很好地工作,但是是否可以使用通配符或LIKE条件呢?
例如,给定此图:
gremlin> graph = TinkerFactory.createModern() (1)
==>tinkergraph[vertices:6 edges:6]
gremlin> g = graph.traversal(standard()) (2)
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().has('name','marko').out('knows').values('name') (3)
Run Code Online (Sandbox Code Playgroud)
我想从控制台打印出该图形的PNG文件.文档没有说明如何做到这一点.提前致谢.
neo4j ×10
cypher ×4
java ×1
maven ×1
neo4j-apoc ×1
neo4j-ogm ×1
spring ×1
spring-boot ×1
tinkerpop ×1
tinkerpop3 ×1