CREATE (ShanghaiF1: Factory {name: 'Factory1'})
CREATE (Shanghai:Airport:Port {name: 'Shanghai', code: 'SHA', cost: '400RMB + 0.6RMB*ps.weight', transit: 1, validity: '1/10/2015'})
CREATE (HongKongA:Airport:Port {name: 'Hong Kong', code: 'HKG', cost: '500HKD+0.6USD*ps.weight'})
CREATE (HongKongS:Seaport:Port {name: 'Hong Kong', code: 'HKGK', cost: '500HKD+0.6USD*ps.weight'})
CREATE (ParisA:Airport:Port {name: 'Paris', code: 'CDG', transit: 1, exclude: ['container']})
CREATE (ParisS:Seaport:Port {name: 'Paris', code: 'CDGS', transit: 1})
CREATE (France:Country {name: 'France'})
CREATE (ShanghaiF1)-[:LAND {carrier: 'X',cost: '500RMB+0.65RMB*ps.weight', conditions: ['ps.packages.all(_.total<2500)'], transit: 5}]->(Shanghai)
CREATE (Shanghai)-[:AIR {carrier: 'Y',cost: '0.8USD* ps.weight', conditions: ['ps.weight>1000'], transit: 10}]->(HongKongA)
CREATE (HongKongA)-[:LAND {carrier: 'XX',cost: '1USD* ps.weight', exclude: ["container"]}]->(HongKongS)
CREATE (HongKongA)-[:AIR {carrier: 'Z',cost: '3USD* ps.weight', exclude: ["batteries"], transit: 20, validity: '1/10/2015'}]->(ParisA)
CREATE (HongKongS)-[:SEA {carrier: 'Z',cost: '0.3USD* ps.weight', exclude: ["seeds"], transit: 40, validity: '1/10/2015'}]->(ParisS)
CREATE (ParisA)-[:IN]->(France)
CREATE (ParisS)-[:IN]->(France)
MATCH (o:Factory { name:"Factory1" }),(d:Airport { name:"Paris" }),
p = allShortestPaths((o)-[*]-(d))
RETURN p
MATCH (o:Factory { name:"Factory1" }),(d:Seaport { name:"Paris" }),
p = allShortestPaths((o)-[*]-(d))
RETURN p
MATCH (o:Factory { name:"Factory1" }),(d:Country { name:"France" }),
p = (o)-[*]-(d)
RETURN p
Constained by mode.
MATCH (o:Factory { name:"Factory1" }),(d:Country { name:"France" }),
p = (o)-[:IN|AIR|LAND*]-(d)
RETURN p
This example, limits the paths by exclude keywords intead of mode. Could be applied based on content restrictions.
MATCH (o:Factory { name:"Factory1" }),(d:Country { name:"France" }),
p = (o)-[*]-(d)
WHERE
NONE( x IN nodes(p) WHERE "container" IN x.exclude OR "batteries" IN x.exclude)
AND NONE( x IN relationships(p) WHERE "container" IN x.exclude OR "batteries" IN x.exclude)
RETURN p