繁体   English   中英

如何在Arango DB图形中查询连接到多个节点的节点

[英]How to query for a node that is connected to multiple nodes in Arango DB graph

我有一个图,其中包含两种类型的节点:景点和酒店。

我想做的就是查询被三个景点包围的酒店 我现在(在下面)的查询提供了至少与一个景点相关的酒店。

FOR document IN Attraction
FOR vertex, edge, path IN 1..2 OUTBOUND document GRAPH "LondonAttractionDB" 
FILTER path.vertices[0].entityTypes[0] == "Attraction" OR path.vertices[0].entityTypes[0] == "Attraction" OR path.vertices[0].entityTypes[0] == "Attraction"
FILTER path.vertices[1].entityTypes[0] == "Hotel"
FOR prop4 IN path.edges[0].properties  
FILTER prop4.name == "name" AND prop4.value == "Food_and_beverage_location" 
OR prop4.name == "name" AND prop4.value == "Food_and_beverage_location" 
OR prop4.name == "name" AND prop4.value == "Accommodation_location" 
RETURN DISTINCT path

这给出了以下结果。 (橙色-酒店,绿色-景点)

在此处输入图片说明

如何在圈子中显示结果? (与三个景点相连的酒店)

任何帮助深表感谢。

没有数据集的详细信息(文档结构和集合),很难回答,但是根据您的示例查询和描述,我将使用另一种方法:

  • 查看所有文件(景点和酒店似乎位于同一集合中)
  • 按类型筛选酒店
  • 对于每个酒店节点,让邻居进入边缘
  • 按吸引力类型过滤这些节点
  • 计算酒店有多少个节点
  • 返回与三个景点完全相同的酒店
FOR hotel IN Attraction
  FILTER doc.entityTypes[0] == "Hotel"
  LET attractions = (
      FOR vertex IN 1..1 INBOUND hotel GRAPH "LondonAttractionDB"
      FILTER vertex.entityTypes[0] == "Attraction"
      RETURN 1
  )
  FILTER LENGTH(attractions) == 3
  RETURN hotel

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM