我有一个由两个集合组成的图表,一个是60,000个服务和10个产品的集合,另一个是将产品连接到服务的100万个边缘的集合。我们希望在图表中找到连接到所有10个产品的所有服务顶点。基本上,我们希望在单个服务中找到所有十个产品的交集,并返回发生这种情况的所有服务。十种产品中的每一种都具有不同的产品ID。有没有人对如何编写一个返回产品交叉点的有效查询有任何建议? 以下是每个集合的一小部分的屏幕截图,采用JSON格式。
答案 0 :(得分:1)
以下查询使用两个集合products
和edgeCol
。它首先收集prods
中的所有10个产品,然后迭代所有服务,并针对每个服务搜索所有连接顶点(产品),并检查它们是否包含在prods
中。
LET prods = (
FOR product IN products
FILTER product.ProductType == 'Product'
RETURN product
)
FOR service IN products
FILTER service.ProductType == 'Service'
FILTER prods ALL IN (
FOR v, e, p IN 1 OUTBOUND service edgeCol
RETURN v
)
RETURN service
只有10个产品和超过60,000个服务,您应该考虑将您的收藏集products
分成两个集合products
和services
,其中产品仅包含您的10个产品。然后,您可以删除字段ProductType
。这样可以进行更高效的查询。
LET prods = (
FOR product IN products
RETURN product
)
FOR service IN services
FILTER prods ALL IN (
FOR v, e, p IN 1 OUTBOUND service edgeCol
RETURN v
)
RETURN service