0

所有相关的

我在 db 上有一个树模型,如图所示

  • 城市节点通过 IS_A_City_BELONGING_TO 链接到区域节点
  • 扇区节点通过 IS_A_SECTOR_BELONGING_TO_THAT_REGION 链接到区域节点
  • 扇区节点通过 IS_A_SECTOR_BELONGING_TO_THAT_CITY 链接到城市节点

分层嵌套的json理想输出如下

<code>需要的json文件层次树</code>

在此处输入图像描述

Indexes
   ON :TTL(ttl) ONLINE 
   ON :City(cityName) ONLINE  (for uniqueness constraint)
   ON :Region(region) ONLINE  (for uniqueness constraint)
   ON :Sector(sectorName) ONLINE  (for uniqueness constraint)

Constraints
   ON ( city:City ) ASSERT city.cityName IS UNIQUE
   ON ( region:Region ) ASSERT region.region IS UNIQUE
   ON ( sector:Sector ) ASSERT sector.sectorName IS UNIQUE

如何使用密码请求从 db 生成 json 文件。

非常感谢您。

4

1 回答 1

0

所以...您的层次结构有点难以阅读...所以我将专注于 JSON 响应部分。虽然 Neo4j 没有 Map 作为属性类型,但它在 Cypher 中是有效的。

要将结果汇总到地图中,您可以使用此格式

MATCH (c:City)<--(s:Sector)
RETURN {city_node:c, city_properties:PROPERTIES(c) name:c.name, sectors:COLLECT(s)} as city

基本上{} as varname定义了您的地图,并{}定义了键值对的内容。

您可以将 2 个地图与 + 运算符(如WITH map1 + map2 as mymap. 在冲突的情况下,第二个映射中的值优先。

如果你只想要一个节点的属性,而不是整个节点,你可以使用PROPERTIES(c) 函数而不是传入节点。

您会很快注意到一件事,这不会递归地工作。在您的情况下,它看起来像固定在 2 个嵌套级别深。所以这个限制应该不是问题。

附带说明一下,如果这是为了扩展,您可能希望使您的 Cypher 分页 (LIMIT+SKIP) 以缩短响应时间。(仅在需要时返回您需要的内容)在此说明中,聚合此客户端可能会更好,因为您可能会经常为每个城市返回一些扇区。

于 2018-07-03T13:25:31.867 回答