首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Azure CosmosDB DocumentDB API与图形API的结合

Azure CosmosDB DocumentDB API与图形API的结合
EN

Stack Overflow用户
提问于 2017-06-28 05:19:10
回答 1查看 929关注 0票数 2

我想要做的是:

  • 将无模式JSON保存到文档中
  • 任意连接这些文档
  • 获取基于上述连接的文档递归树,例如:
代码语言:javascript
复制
{
    "name": "Document 1",
    "includes": [
        {
            "name": "Document 2.1"
            "includes": [
                {
                    "name": "Document 3",
                    "includes": []
                }
            ]
        },
        {
            "name": "Document 2.2",
            "includes": []
        }
    ]
}

设置的当前状态:

  • 用图(Gremlin) API配置的CosmosDB实例
  • 可以通过DocumentDB API创建(JSON)文档
  • 可以通过Graph创建文档的边
  • 使用Node.js SDK

问题:

  1. 是否可以通过Graph将JSON对象保存为顶点?它允许用g.addV('person').property('id', 'thomas').property('firstName', 'Thomas').property('age', 44).property('userid', 1)创建顶点,但是像g.addV({ firstName: 'Thomas' })这样的东西似乎不起作用。
  2. 如果我通过DocumentDB API添加文档,并通过graph添加它们之间的边,然后遍历图,则结果只包含文档的ID,而不包括其他属性。是否有可能以某种方式填充这些文档?

示例遍历查询:

g.V('03e0576f-2ff7-6109-5ed5-237b43191354').repeat(out('includes')).until(not(out('includes'))).simplePath().dedup().tree().by('id')

此查询的结果:

代码语言:javascript
复制
[{
    "03e0576f-2ff7-6109-5ed5-237b43191354": {
        "key": "03e0576f-2ff7-6109-5ed5-237b43191354",
        "value": {
            "7fab4007-c80c-ba21-f5d3-8eb353ea3279": {
                "key": "7fab4007-c80c-ba21-f5d3-8eb353ea3279",
                "value": {
                    "eec55fbd-6900-130d-247f-fb437b093711": {
                        "key": "eec55fbd-6900-130d-247f-fb437b093711",
                        "value": {}
                    },
                    "cfd14a8c-1ac3-6cc3-e2a4-ac3f250478e1": {
                        "key": "cfd14a8c-1ac3-6cc3-e2a4-ac3f250478e1",
                        "value": {
                            "acac136a-3bd4-831c-df6e-e5b95e593b9a": {
                                "key": "acac136a-3bd4-831c-df6e-e5b95e593b9a",
                                "value": {}
                            }
                        }
                    }
                }
            }
        }
    }
}]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-28 12:41:44

是的,可以通过Graph和Document插入文档。但是,Cosmos希望为文档提供一种特定的GraphSON格式,以便在遍历图时获取它们的所有属性。

我建议查看Tinkerpop文档中的顶点性质GraphSON,以便更好地了解这些主题。

通过Gremlin添加文档时,语法为要添加的所有属性分隔的名称值逗号。试试这个:

代码语言:javascript
复制
g.addV('label', 'human', 'name', 'jesse', 'age', 27)

现在,如果您转到Azure门户并执行一个SQL查询SELECT * FROM c,您将能够看到Cosmos将您的文档翻译成的格式。

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

https://stackoverflow.com/questions/44794180

复制
相关文章

相似问题

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