我正在研究推荐引擎。收集用户数据(他们的友谊、位置、喜好、教育等)并已存储在 mongodb 中。我需要向这些用户推荐相关产品。出于显而易见的原因(便于节点之间的遍历、路径信息等),我计划将 neo4j 用于推荐引擎。问题是我必须首先将 mongodb 数据转换为 neo4j 节点/关系,处理数据并将结果发送回 mongodb 数据库。主要问题是我们最终会维护两个数据库,这是开发团队不会高兴的。我已经研究过类似的帖子 mongodb-neo4j和 spring data但不确定如何解决这个问题。
这些是我的问题
1- 仅仅为了推荐引擎而添加另一个数据库是否值得(我们正在处理一个大型网络),尽管 neo4j 非常适合此类任务。
2-我正在使用 cypher 进行查询,对 java、rest API 和 spring 数据了解不多。我应该使用哪种 API 进行 mongodb-neo4j 通信?我目前的解决方案是使用 R 并将其用作连接 mongodb 和 neo4j 的平台。
3- 其他图数据库怎么样,有没有适合与 Mongo 集成的图数据库?
最佳答案
我找到了两种集成 mongodb 和 Neo4j 的方法。第一个是由ryan1234建议的将 Gremlin 与 Gmongo 一起使用。根据这个优秀的blog,步骤如下
1- 下载 Gmongo和 Java mongo driver
2-复制neo4j/lib目录下的两个jar文件
3-这是一个例子。假设我们在 mongodb 中有这个集合(称为 follows)
{ "_id" : ObjectId("4ff74c4ae4b01be7d54cb2d3"), "followed" : "1", "followedBy" : "3", "createdAt" : ISODate("2013-01-01T20:36:26.804Z") }
{ "_id" : ObjectId("4ff74c58e4b01be7d54cb2d4"), "followed" : "2", "followedBy" : "3", "createdAt" : ISODate("2013-01-15T20:36:40.211Z") }
{ "_id" : ObjectId("4ff74d13e4b01be7d54cb2dd"), "followed" : "1", "followedBy" : "2", "createdAt" : ISODate("2013-01-07T20:39:47.283Z") }
从 Neo4j 的 Gremlin shell 运行以下命令。
import com.gmongo.GMongo
mongo = new GMongo()
db = mongo.getDB("local")
db.follows.findOne().followed
x=[] as Set; db.follows.find().each{x.add(it.followed); x.add(it.followedBy)}
x.each{g.addVertex(it)}
db.follows.find().each{g.addEdge(g.v(it.followedBy),g.v(it.followed),'follows',[followsTime:it.createdAt.getTime()])}
这就是我们在 neo4j 中创建的等价图
关于mongodb - 将 mongodb 与 neo4j 集成,是否有任何 API 可以链接它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15477934/