以下查询使用两个集合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,其中 products 仅包含您的 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