我在mongodb中有一个集合,其中每个文档都是一个图表。每个文档的文档架构都不同。每个文档都有以下数组作为其键
nodeAttrs
:对象数组,每个对象表示节点
nodes
:包含nodeAttrs
edgeAttrs
:对象数组,每个对象表示边缘
edges
:包含在edgeAttrs
现在的挑战是,对于文档,这4个属性中的任何一个都可以为null,但大多数时候它们都是填充的。但是,这些数组中对象的模式在文档中是不同的。对于某些图形,边缘可能具有与其他图形不同的属性。与节点类似。
我正在使用compose/transport utility将数据从mongoDB迁移到elasticsearch。我想将每个记录转储到目标中的单独类型(具有不同的映射)。有人最近试过了吗?
以下是edgeAttrs元素和edge数组的示例:
这是edgeAttrs:
"edgeAttrs" : [
{
"id" : "LinkTypeNum",
"title" : "LinkTypeNum",
"generatorType" : "file",
"generatorOptions" : null,
"_id" : ObjectId("539dd0a62a91d09735264ae7"),
"visible" : true
},
{
"id" : "LinkType",
"title" : "LinkType",
"generatorType" : "file",
"generatorOptions" : null,
"_id" : ObjectId("539dd0a62a91d09735264ae6"),
"visible" : true
},
{
"id" : "In Minimal Spanning Tree (c)",
"title" : "In Minimal Spanning Tree (c)",
"generatorType" : "file",
"generatorOptions" : null,
"_id" : ObjectId("539dd0a62a91d09735264ae5"),
"visible" : true
}
]
这是一个只包含一条边的边数组。边的attrs数组包含edgeAttrs中定义的属性加上权重属性。类似的结构存在于具有更多属性的nodeAttrs和节点。
"edges" : [
{
"id" : "0",
"source" : "76",
"target" : "1",
"_id" : ObjectId("539dd0a62a91d09735262f33"),
"attr" : [
{
"id" : "weight",
"val" : "1.0",
"_id" : ObjectId("539dd0a62a91d09735262f37")
},
{
"id" : "LinkTypeNum",
"val" : "3",
"_id" : ObjectId("539dd0a62a91d09735262f36")
},
{
"id" : "LinkType",
"val" : "Non-Feeding Positive",
"_id" : ObjectId("539dd0a62a91d09735262f35")
},
{
"id" : "In Minimal Spanning Tree (c)",
"val" : "false",
"_id" : ObjectId("539dd0a62a91d09735262f34")
}
],
"visible" : true,
"layerId" : 0,
"label" : "edge"
}
]