首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加一个mongo文档作为顶点- Gremlin

添加一个mongo文档作为顶点- Gremlin
EN

Stack Overflow用户
提问于 2015-06-05 11:19:01
回答 1查看 587关注 0票数 0

我正在学习如何在MongoDB中使用Gremlin。我想从一个名为Project的mongo数据库开始创建一个图形neo4j。

代码语言:javascript
复制
import com.gmongo.GMongo
gremlin> mongo = new GMongo()
==>com.gmongo.GMongo@5c08c46a
gremlin> db = mongo.getDB("Project")
==>DB{name='Project'}
gremlin> Graph graph = new Neo4jGraph("/tmp/my_graph");
==>neo4jgraph[EmbeddedGraphDatabase [\tmp\my_graph]]

现在我可以在Gremlin上使用mongo命令了。

项目数据库有一个名为team的集合。以下是团队收集的文档:

代码语言:javascript
复制
{
    "_id" : "Juv.35",
    "official_name" : "Juventus Football Club S.p.A.",
    "common_name" : "Juventus",
    "country" : "Italy",
    "started_by" : {
        "day" : 1,
        "month" : 11,
        "year" : 1897
    },
    "stadium" : {
        "name" : "Juventus Stadium",
        "capacity" : 41011
    },
    "palmarès" : {
        "Serie A" : 33,
        "Coppa Italia" : 10,
        "Supercoppa Italiana" : 6,
        "UEFA Champions League" : 3,
        "UEFA Europa League" : 3,
        "UEFA Super Cup" : 2,
        "UEFA Intertoto cup" : 1,
        "Cup Winners cup" : 1,
        "UEFA Intercontinental cup" : 2
    },
    "uniform" : "black and white"
}

现在,我想在包含尤文图斯信息的变量图中添加一个顶点。我试试看:

代码语言:javascript
复制
gremlin> graph.addVertex([db.team.find({common_name:'Juventus'})])

但不起作用。(我找不到关于这个主题的文档)我能做些什么来添加这个顶点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-05 14:12:17

你没有说什么“不起作用”,但让我提供以下内容。您的addVertex语法看起来不太正确。暂时忘了mongodb:

代码语言:javascript
复制
graph.addVertex(1)

添加一个具有指定id的顶点。当然,neo4j不支持用户提供的is,因此忽略了这个值。另一方面,如果你这样称呼它:

代码语言:javascript
复制
graph.addVertex([common_name:'Juventus'])

在提供Groovy Map的情况下,您将创建一个顶点,其属性为"common_name“,该属性的值为”尤文图斯“。有了现在的语法:

代码语言:javascript
复制
graph.addVertex([db.team.find({common_name:'Juventus'})])

您正在调用addVertex,所传递的参数是从mongo查找返回的任何内容的Groovy List。我认为Neo4j只是忽略了这个论点,以及为什么看起来什么都不起作用。

考虑到您的数据是嵌套的,我认为您必须稍微转换数据才能将其直接转换为Neo4j (我不认为Neo4j作为数据类型支持Map )。因此,为了添加一个顶点,我认为您需要执行如下操作:

代码语言:javascript
复制
transformToMap = { record -> ... }
graph.addVertex(transformToMap(db.team.find({common_name:'Juventus'})))

其中,transformToMap是您编写的函数,它接受嵌套结构并将其扁平化。所以就像这样:

代码语言:javascript
复制
"stadium" : {
    "name" : "Juventus Stadium",
    "capacity" : 41011
},

会变成“体育场名称”和“体育场容量”。使用扁平的Map,我会认为您的数据应该加载得很好。

此外,您应该考虑如何索引您的数据。由于无法分配标识符,因此需要创建索引,以便以独特的方式查找数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30665213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档