我需要创建一个基于MongoDB及其$graphlookup函数的图形数据库来回答以下问题:
让我们假设我有一个人与人之间事务列表。下面是一个事务示例:
{
from: "A",
to: "B",
value: 1
}
我需要创建一个描述这种连接的无向图。每个节点都应该是一个人,每个边都应该有一个体积:这两个人之间的交易数量。
例如,如果给我以下列表:
[
{
from: "A",
to: "B",
value: 1
},
{
from: "B",
to: "A",
value: 3
}
]
这两个事务都应该用一条体积为2边来表示。
我的问题是我不明白mongo $graphlookup如何创建一个无方向的关系。
在上传到mongodb数据库之前,数据是否需要进行预处理?我应该如何查询它以获得一个类似于结果的无方向图?
我需要实现以下结果。给定输入:
[
{
from: "A",
to: "B",
value: 1
},
{
from: "B",
to: "A",
value: 3
},
{
from: "C",
to: "A",
value: 6
},
{
from: "C",
to: "A",
value: 10
},
{
from: "A",
to: "C",
value: 20
}
]
我想创建一个graphlookup,它将返回以下类型的内容:
{
"startedAddress": "A",
"neighboors": [
{"address": "C", "volume": 3, "depth": 1},
{"address": "B", "volume": 2, "depth": 1}
]
}
1条答案
按热度按时间ztmd8pv51#
使用
$setUnion
创建一个数组来存储边的2个端点,并使用结果作为id来执行$group
以计算体积之和。Mongo Playground