1

我试图围绕 Neo4j 的工作原理以及如何将其应用于我的问题。我认为这应该很容易而且只需几分钟,但我被卡住了。

我在 MongoDB 中有数据,比如说UserItem. 我想要的是连接UserItem在一个LIKE关系图中(也许是一个score)。后来我想做一些事情,比如根据连接推荐项目,基本的东西。

但是如何将数据导入 Neo4j?MongoDB 中的每个文档都有一个唯一的 s _id,所以我可以将两个_ids 都放入 Neo4j 并连接它们。到目前为止,我发现甚至不可能有基于_id字段的唯一节点(Neo4j 具有数字递增的 id),这只有通过一些“hack”才有可能(https://github.com/jexp/app-net -graph/blob/master/lib/appnet.rb#L11)或使用MERGE(我坚持<2.0)。如果多次执行,即使他们在网站上的示例也会再次添加相同的节点。我想我对如何使用 Neo4j 有一个根本的误解。也许我被redis宠坏了,我可以在里面放字符串并且它就可以工作. Redis 的集合虽然对于复杂的图是不可行的,但仅适用于简单的连接。

也许有人可以通过一个简单的密码示例来帮助我,说明如何添加两个节点foo并将bar它们与LIKE连接连接。并且操作应该是幂等的,无论在执行之前是否已经存在任何或所有节点/关系。

我正在通过 REST 访问 Neo4j,特别是使用此节点模块https://github.com/thingdom/node-neo4j

4

2 回答 2

1

您可以将外部 ID 定义为节点上的额外属性。然后根据您是否使用 SpringData,您可以插入数据。

如果您使用 SpringData,您可以将外部 ID 配置为唯一索引,然后通常保存节点(但请考虑,插入重复 ID 将覆盖现有 ID)。

如果您使用的是纯 java API,则可以按照此处所述创建唯一节点:http: //docs.neo4j.org/chunked/stable/tutorials-java-embedded-unique-nodes.html#tutorials-java-embedded-唯一获取或创建

编辑:至于示例查询,这对您有帮助吗? http://console.neo4j.org/?id=b0z486

使用 java api 你会这样做

firstNode = graphDb.createNode();
firstNode.setProperty( "externalID", "1" );
firstNode.setProperty( "name", "foo" );
secondNode = graphDb.createNode();
secondNode.setProperty( "externalID", "2" );
secondNode.setProperty( "name", "bar" );

relationship = firstNode.createRelationshipTo( secondNode, RelTypes.Likes );

我建议你在这里阅读一些教程:http: //docs.neo4j.org/chunked/stable/tutorials-java-embedded-hello-world.html

于 2013-09-17T11:02:06.123 回答
0

鉴于您使用的是 Neo4J1.9,您是否尝试过在 _ID 列上创建唯一索引?

从文档中尝试这篇文章

如果您使用的是 Neo4j2,那么这篇文章很有帮助

于 2014-02-08T00:39:42.947 回答