Neo4j cypher заявки, връщащи различен резултат от броя

Искам заявка, която, започвайки от възел, преброява възможните крайни възли при даден тип релация:

Например тази заявка:

MATCH (start:typeA{my_id:"abc"})-[:rel]->(l:typeB) return count(l)

работи чудесно и връща правилно число, т.е. 500. Същото се случва с:

MATCH p=(start:BusStop{StopCode:"0247"})-[:CAN_BOARD]->(:Leg) return count(p)

Но ако го направя:

MATCH (start:typeA{my_id:"abc"}) return count((start)-[:rel]->(:typeB))

връща 1.

Каква е разликата между тази заявка и предишните?


person Francesco Boi    schedule 02.08.2019    source източник


Отговори (1)


Резултатът от израз на път (както е използван в последната ви заявка) е списък с пътища. Това е различно от резултата, когато същият модел на пътя се използва в клауза MATCH.

Щяхте да получите 500, ако промените последната си заявка да използва SIZE() вместо COUNT():

MATCH (start:typeA{my_id:"abc"}) return SIZE((start)-[:rel]->(:typeB))
person cybersam    schedule 02.08.2019