我希望能做什么:
-
将无模式JSON保存到文档中
-
任意连接这些文件
-
根据上述连接获取递归的文档树,例如:
{
"name": "Document 1",
"includes": [
{
"name": "Document 2.1"
"includes": [
{
"name": "Document 3",
"includes": []
}
]
},
{
"name": "Document 2.2",
"includes": []
}
]
}
我的设置的当前状态:
-
使用Graph(Gremlin)API配置的CosmosDB实例
-
可以通过DocumentDB API创建(JSON)文档
-
可以通过Graph API为文档创建边缘
-
使用Node.js SDK
问题:
-
是否可以通过Graph API将JSON对象保存为顶点?它允许使用
g.addV('person').property('id', 'thomas').property('firstName', 'Thomas').property('age', 44).property('userid', 1)
创建顶点,但像g.addV({ firstName: 'Thomas' })
似乎不起作用 . -
如果我通过DocumentDB API添加文档并通过Graph API在它们之间产生边缘并遍历图形,结果只包含文档的ID,而不包括其他属性 . 是否有可能以某种方式填充文档?
示例遍历查询:
g.V('03e0576f-2ff7-6109-5ed5-237b43191354').repeat(out('includes')).until(not(out('includes'))).simplePath().dedup().tree().by('id')
此查询的结果:
[{
"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": {}
}
}
}
}
}
}
}
}]
1 回答
是的,可以通过Graph API和Document API插入文档 . 但是,Cosmos期望文档具有特定的GraphSON格式,以便在图遍历期间拾取所有属性 .
我建议您从Tinkerpop文档中查看Vertex Properties和GraphSON,以便更好地了解这些主题 .
通过Gremlin添加文档时,语法是为要添加的所有属性分隔的名称值逗号 . 试试这个:
现在,如果您转到Azure门户并执行SQL查询
SELECT * FROM c
,您将能够看到Cosmos已将文档转换为的格式 .