我有一个配置为使用Java 8的maven项目,一切正常,eclipse编译代码如下:
Map<String,String> map = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)
当我在错误/警告选项卡上设置它时,它甚至会抱怨旧式代码("类型参数的冗余规范").问题是,我无法弄清楚如何使它在默认情况下使用这种语法在自动完成 - 我很确定我看到它工作较早,但现在每当我ctrl-space插入构造函数时,它坚持添加参数,我不喜欢.
任何人都可以提示要检查哪些设置以使内容辅助插入<>而不是<String,String>?或者它可能与我使用Java 8而不是Java 7或我正在使用maven这一事实有关?
我正在使用CSV加载到我的neo4j中,我正在努力构建我的一个用例的查询.我有一个包含以下内容的文件:
aNodeFoo,xNodeBar
1,5
2,10
3,
4,
Run Code Online (Sandbox Code Playgroud)
文件中还有启动节点的其他属性,但这与问题无关.我想要达到的目标是:
换句话说,对于这个例子,我希望节点X的属性栏已经设置为5和10,我希望4个节点A的属性foo设置为1,2,3和4,节点A foo = 1链接到节点X bar = 5,节点A foo = 2链接到节点X bar = 10.
如果保证所有行都被填充,则查询非常简单:
LOAD CSV WITH HEADERS FROM ... AS csvLine
MATCH (nodeX:X {bar: csvLine.xNodeBar})
MERGE (nodeA:A {foo: csvLine.aNodeFoo})
MERGE (nodeA) -[:R]-> (nodeX)
Run Code Online (Sandbox Code Playgroud)
我尝试使用OPTIONAL MATCH(如果单元格为空,则找不到nodeX的任何内容),但后来我收到错误,说我正在尝试链接到空节点.
提示任何人?在cypher中这样的查询是否可行?
我有一组包含重复数据的 CSV 文件,即同一行可能(并且确实)出现在多个文件中。每一行由其中一列 (id) 唯一标识,并且具有相当多的其他列来指示属性以及所需的关系(即要链接到的其他节点的 id)。这些文件都具有相同的格式。
我的问题是,由于文件的大小和数量,我想避免处理已经存在的行 - 我知道只要 id 相同,文件中的行内容就会相同。
如果具有给定 id 的节点不存在,任何密码向导都可以建议如何编写一个查询来创建节点、设置所有属性并创建所有关系,但如果找到这样的节点则完全跳过该操作?我尝试使用 MERGE ON CREATE,大致如下:
LOAD CSV WITH HEADERS FROM "..." AS row
MERGE (f:MyLabel {id:row.uniqueId})
ON CREATE SET f....
WITH f,row
MATCH (otherNode:OtherLabel {id : row.otherNodeId})
MERGE (f) -[:REL1] -> (otherNode)
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这只能应用于不再设置属性,但我无法弄清楚如何跳过关系的合并部分(这里只显示了一个,但还有很多)。
提前致谢!