假设我正在使用neo4j,我能想到的唯一方法是可视化我的模拟数据是生成cypher代码并将其粘贴到neo4j的data browser 中 是否有另一种方法(更好,更简单?)可以使用cypher来创建可视化的方式?生成cypher代码本身似乎是一项足够复杂的任务. 编写测试当然是确保关系正确建立的另一种方式,但是当我学习系统时,我想从视觉上看到这些内容,以确保它们按预期设置. 解决方案 this gist 包含一个示例GraphViz点表示法,由一系列可视化软件支持. (当然, graphviz 本身) (链接到原始博客文章,我找到了一个示例: http://blog.neo4j.org/2012/05/graph-this-rendering-your-graph-with.html ) 其他解决方案 有一个新解决方案可以使用网络浏览器:它允许您通过属性搜索节点,检查节点,展开邻域... Disclamer:我是Linkurious和Gephi的联
以下是关于 cypher 的编程技术问答
我正在使用JSON APOC插件来创建带有列表的JSON的节点,并且我正在尝试创建列表中列表标签的节点: { "pdf":[ { "docID": "docid1", "docLink": "/examplelink.pdf", "docType": "PDF" } ], "jpeg":[ { "docID": "docid20", "docLink": "/examplelink20.pdf", "docType": "JPEG" } ], ...,} 我想通过Doctypes(PDF,JPEG)进行迭代,并将标签设置为列表中的Doctype属性.现在,我必须为每个Doctype列表进行单独的块(JPEG:[],PDF:[]): WITH "
所以我的顶级问题是我试图返回MERGE是否导致新节点的创建. 为了做到这一点 我想象它的工作方式: MERGE(: Person {id:'Tom Jones'}) WITH false as temp_bool ON CREATE set temp_bool = true RETURN temp_bool 显然这不起作用. 我正在寻找一种在Cypher查询中创建任意温度值的方法,并具有最终返回这些变量的能力. 谢谢 解决方案 在这样的简单合并案例中,最多可以创建一个节点,这是一种实现所需的清洁方法,可以检查结果统计数据.我使用螺栓API的情况您应该检查: results.consume().counters.nodes_created = 1 其他解决方案 您可以做自己想做的事,这就是如何(我的第一个答案的结合, @cybermam的添加).您只需使用您创建的节点属性,然后删除,而不是尝试时的无限变量. MERGE(tom:Per
我在流浪者的Docker上运行neo4j. 我试图通过/导入/目录(我必须将文件移动到那里)中的文件加载CSV.我的要求看起来像这样: "LOAD CSV WITH HEADERS FROM \"file:///insert-neo4j.csv\" AS row ... 这为我提供了以下错误: {"results":[],"errors [{"code":"Neo.ClientError.Statement.ExternalResourceFailed","message":"Couldn't load the external resource at: file:/var/lib/neo4j/import/insert-neo4j.csv"}]} 通常向我建议我将以下内容附加到我的'/conf/neo4j.conf'文件中,但是此文件不存在,并且手动创建它似乎不起作用... dbms.directories.import=import dbms.secu
我开始使用neo4j的Cypher负载CSV,以将较大的CSV文件进口到我的DB中.我想将每个导入的节点添加为一个唯一的ID(UUID)作为属性. 我的尝试是: LOAD CSV FROM "file:..." AS csvLine CREATE (c:Customer { uuid: {uuid}, name: csvLine[0], code: csvLine[1]}) 不幸的是,我会为每个节点收到相同的uuid(尽管它通常会在调用时会生成新的uuid的函数),但看起来UUID似乎是生成1次的,然后在创建节点和解析该节点时附加到每个节点csv-file. 是否有一种方法可以为每个导入的CSV线生成新的UUID来标记节点? 感谢您的提示 Balael 解决方案 不确定您在哪里看到{uuid}是一个函数. 它只是使用您传递的任何内容作为参数" uuid". 创建CSV时,您必须生成UUID. 在Cypher中,当前没有uuid()函数. 您
我正在寻找一种基于增量计数器(不是很大的uuids),为我在neo4j中所有节点/关系生成唯一标识符. neo4j发动机维护的内部ID并不可靠作为外部参考. 关闭的解决方案是这个问题中提出的代码单个CREATE子句创建多个新节点时不起作用: // get unique id MERGE (id:UniqueId{name:'Person'}) ON CREATE SET id.count = 1 ON MATCH SET id.count = id.count + 1 WITH id.count AS uid // create a new node attached to every existing :something node MATCH (n:something) CREATE (:somethingRelated {id:uid}) -[:rel]-> (n) 有多个(n:something)时,每个新创建的(:somethingRelated)都会共享
我是Neo4J的新手,我需要一些帮助. 我试图每两种含义一次在节点的多个属性中制定约束: 我需要指定限制许多属性,而不必一次又一次地键入命令 我需要将许多属性定义为单个统一约束,例如SQL中的3个属性是主要键而不是分离的. 我该如何实现? 解决方案 您实际上是在问2个问题. apoc过程例如,如文档所示,此调用: CALL apoc.schema.assert( {Track:['title','length']}, {Artist:['name'],Track:['id'],Genre:['name']}); 将返回这样的结果(另外,如果删除了索引或约束,则action值也将返回action的行): ╒════════════╤═══════╤══════╤═══════╕ │label │key │unique│action │ ╞════════════╪═══════╪══════╪═════
我在neo4j唯一约束方面遇到了一些麻烦,在其中创建Cypher语句由于已经存在的节点而无法执行.问题是,它不(存在).另外,昨天使用此精确数据的精确过程. 我的neo4j版本是ubuntu上的社区2.0.0(发行)12.04.3.这是我目前的情况: 我的约束: tas@vtas:~$ neo4j-shell neo4j-sh (?)$ schema Indexes ON :ConsumerUser(tokens) ONLINE ON :Id(uuid) ONLINE (for uniqueness constraint) #relevant ON :User(email) ONLINE (for uniqueness constraint) ON :User(username) ONLINE (for uniqueness constraint) Constraints ON (user:U
有没有办法告诉neo4j导入时值类型? 例如,neo4j是否知道" 2015-0104T10:33:44"是否是日期或字符串? 谢谢! 解决方案 neo4j使用Java原始类型,字符串或阵列用于属性值.没有日期类型.因此," 2015-0104T10:33:44"是字符串. Cypher为类型转换提供了几个功能,例如toFloat,toInt,...可能对您有所帮助. 大多数人以来以自时代以来存储Millis,以获取日期和时间信息.但是,Cypher尚未具有将字符串转换为Millis的函数,因此您可能会在CSV文件中的预处理步骤中进行此操作. 其他解决方案 没有 date inneo4j中的类型. 但是,您可以在Neo4J中将值施放为3种可能的类型: toFloat(value) toString(value) 其他解决方案 ,我不知道该问题是如何回到2015年的情况,但是现在,至少现在,在使用Load CSV导入时,可以使用任何一
我是Neo4J的新手.我正在测试图形数据库,并且具有以下简单的图表测试结构:带有属性,属性,属性,,,,属性的标记节点连接的. 所有节点都有一个属性,称为访问.它是字符串元素的列表,例如: {access: ['http', 'www']} 我正在搜索一个解决方案,在该解决方案中,我从连接的启动节点(无关紧要的类型或方向)及其关系中获取所有节点,其中存在节点的访问属性上的相交.我将从给定的节点开始,然后将访问属性与下一个连接的节点进行比较.然后,获取第二个节点的属性,然后将此访问属性与连接到它们的节点进行比较.等等.目标应该是所有节点及其连接,其中存在访问属性的相交.例如,在图形的具体结构上,我们从节点 enc 2009 开始,并应遍历所有连接的节点,直到达到访问属性没有相交的节点为止.在此示例中,应达到以下目标:穿越图形 我尝试了以下Cypher查询,但在每个节点上都无法正常工作. MATCH (n:CONFERENCE_SERIE) WHERE n.ful
给出如下查询: START n = node(123) MATCH p = n-[r:LIKES*..3]->x RETURN p; 我在上面的查询中获得的结果路径包含周期. 我只能返回简单的路径? 给定这个示例: 我如何避免使用重复节点的路径,例如:[neo,morpheus,trinity,morpheus,neo] 解决方案 指定路径的唯一性是Cypher的计划特征. 现在,我们必须确定没有节点是路径中的重复. 有一个ALL谓词,对于集合的所有元素(路径为)必须保持真实. 使用filter您可以提取某个条件成立的集合的元素. START neo=node(1) MATCH path= neo-[r:KNOWS*..4]->other WHERE ALL(n in nodes(path) where 1=length(filter(m in nodes(path) : m=n))) RETURN neo
我想在Neo4J中存储为时树的时间序列上构建直方图. 数据结构是由用户使用时间戳(例如用户购买类别)完成的事件. 我需要拥有的是每个用户在开始时间和结束时间之间的浏览数量,间隔为(1秒至几天) 当我阅读 neo4j文档我找不到一个查询中的任何方法,恐怕每个用户都会很慢. 我知道Cypher功能,但我不知道如何创建此类查询. 我正在寻找这样的东西(不工作) MATCH startPath=(root)-[:`2010`]->()-[:`12`]->()-[:`31`]->(startLeaf), endPath=(root)-[:`2011`]->()-[:`01`]->()-[:`03`]->(endLeaf), valuePath=(startLeaf)-[:NEXT*0..]->(middle)-[:NEXT*0..]->(endLeaf), vals=(middle)-[:VALUE]->(event) WHERE root.name = 'Root' RETURN e
我的下一个形式有一个JSON: { "conditions": [ { "id": "123", "type": "a", entities: ["529", "454"] }, { "id": "124", "type": "b", entities: ["530", "455"] } ] } 我想基于类型属性在条件节点之间创建关系船,该属性可以是a/b,我假设这些实体已经存在于neo4j中. 我正在尝试像以下密码一样的事情,但这不起作用. WITH {json} as data UNWIND data.conditions as condition MATCH (c:Condition { conditionId: condition.id}) CASE c.type WHEN 'a' THEN FOREACH (sid IN condition.entities | MERGE (s:No
我试图获得两个属性总和(重量),并将它们最终组合成组合的重量. 因此,首先是单独的查询,因此您可以看到正确的总和 Language = French,超过6(比例1-10): MATCH (User)-[Speaks]->(Language) WHERE Language.language = 'French' AND Speaks.proficiency >=6 RETURN User.name, SUM( CASE WHEN Language.language='French' THEN Speaks.proficiency*3 END )*0.1 AS TOTAL_Language ORDER BY TOTAL_Language DESC user.name total_language 大卫3 Marion 1.8 Skill = Finance,Banking,IT,Marketing Weight =1 (of 1):
说我的图形数据库中有3件事,这3件事中的每一个都附加了0个或更多个子任务.我如何进行查询以检索图中每个事物的前两个子字节(根据某些任意订购). 这是一个示例设置: CREATE (t1:Thing)-[:X]->(a1:SubThing), (t1)-[:X]->(a2:SubThing), (t1)-[:X]->(a3:SubThing), (t1)-[:X]->(a4:SubThing), (t2:Thing)-[:X]->(b1:SubThing), (t2)-[:X]->(b2:SubThing), (t2)-[:X]->(b3:SubThing), (t3:Thing); 我可以运行什么匹配命令来接收这样的表: t s (0:Thing) (3:SubThing) (0:Thi
域类如下: @NodeEntity public class Product{ private Long nodeId; @Indexed(indexName = "productCode") private String code; ... } 存储库类: public interface ProductRepository extends GraphRepository{ @Query(value="start product=node:productCode(code={0}) return product") public Set findProducts(String code); } 如何使代码查找情况不敏感? 我尝试正则表达式和失败.编码如下: public interface ProductRepository extends G
在我的SDN 4项目中,我有一个@QueryResult pojo: @QueryResult public class WeightedDecision { private Decision decision; private double weight; public Decision getDecision() { return decision; } public void setDecision(Decision decision) { this.decision = decision; } public double getWeight() { return weight; } public void setWeight(double weight) { this.weight = weight; } } 和许
我有一个以下Decision实体删除的neo4j cypher查询: MATCH (d:Decision) WHERE id(d) IN {decisionsIds} OPTIONAL MATCH (d)-[r]-(t) DELETE d, r WITH t, r WHERE NOT (id(t) IN {decisionsIds}) OPTIONAL MATCH (t)-[r2:VOTED_ON|:CREATED_BY|:VOTED_FOR]-() WHERE r2 r WITH t, r2 WHERE none(x in labels(t) WHERE x in ['User', 'Decision']) DELETE t, r2 以前,我有一个与实体Criterion和Decision的关系Vote和VOTED_FOR的实体.另外,Vote具有关系CREATED_BY to User实体. 一切都很好. 今天,我更改了这个模式.我介绍了新的
我有一个以下Cypher查询: PROFILE MATCH (childD:Decision) WITH childD ORDER BY childD.createDate DESC SKIP 0 LIMIT 10 MATCH (childD:Decision)-[ru:CREATED_BY]->(u:User) OPTIONAL MATCH (childD:Decision)-[rup:UPDATED_BY]->(up:User) RETURN ru, u, rup, up, childD AS decision, [ (childD)-[rdt:BELONGS_TO]->(t:Tag) | t ] AS tags 现在在我的neo4j数据库(〜23k决策节点)上此查询工作〜50 ms,我不理解或在childD.createDate字段上使用索引. 这是PROFILE输出: 这是我的SDN 4实体: @NodeEntity public abstra