我neo4j
数据一样,如下所示:修改暗号查询
这里我有province
和city
和country
和city
之间COUNTRY_CITY
之间的关系PROVINCE_CITY
关系country
和province
之间COUNTEY_PROVINCE
关系。当用户用country name
调用api时,我想返回所有province
和city
。要做到这一点,我已经运行以下查询:
MATCH path=(cn:Country { name: "Bangladesh" })-[:COUNTRY_PROVINCE]->(pv:Province)-[:PROVINCE_CITY]->(ct:City)
RETURN { x: nodes(path) }
而且我已经得到了以下结果(国家,省,市):
{ x: nodes(path) }
{ "x": [ { "name": "Bangladesh"}, { "name": "Dhaka" }, { "name": "Dhaka" } ] }
{ "x": [ { "name": "Bangladesh"}, { "name": "Dhaka" }, { "name": "Narayanganj" } ] }
{ "x": [ { "name": "Bangladesh"}, { "name": "Sylhet" }, { "name": "Sylhet" } ] }
{ "x": [ { "name": "Bangladesh"}, { "name": "Khulna" }, { "name": "Khulna" } ] }
{ "x": [ { "name": "Bangladesh"}, { "name": "Khulna" }, { "name": "Jessore" } ] }
{ "x": [ { "name": "Bangladesh"}, { "name": "Chittagong" }, { "name": "Chittagong" } ] }
{ "x": [ { "name": "Bangladesh"}, { "name": "Chittagong" }, { "name": "Comilla" } ] }
现在的问题是,我怎么能得到与省和准城市,如国家名单:
[
{
country: {
name: "Bangladesh",
province: [
{
name: "Dhaka",
city: [
{ name: "Dhaka" },
{ name: "Narayanganj" }
]
},
{
name: "Sylhet",
city: [
{ name: "Sylhet" }
]
},
{
name: "Chittagong",
city: [
{ name: "Chittagong" },
{ name: "Comilla" }
]
},
{
name: "Khulna",
city: [
{ name: "Khulna" },
{ name: "Jessore" }
]
}
]
}
}
]
以下是使用Neo4j 3.1.x的地图投影的布鲁诺回答的一个小变化:MATCH(country:Country {name:“Country A”}) - [:COUNTRY_PROVINCE] - >(province:Province) - [:PROVINCE_CITY] - >(城市:城市) WITH country,province {.name,city:collect(city {.name})}作为省 RETURN [country {.name,province:collect(province)}] as country' – InverseFalcon