In the Web console Power Tool I tried
Code:
start user=node({user}), event=node({eventId})
match user-[host?:HOSTS]->event,
event-[:ITEMS_NEEDED]->neededItem-[:ITEM]->item,
event-[:ITEMS_SIGNED_UP_FOR]-> signedUpToBringToEvent-[userSignedUp?:USER]->user
return host!=null as isHost, ID(neededItem) as neededItemId, neededItem.quantity as quantity, item.name as itemName,
userSignedUp!=null as currentUserSignedUp, ID(signedUpToBringToEvent) as itemSignedUpId
and similar variations. It looks like Neo4j doesn't like things like "host!=null as isHost" I got messages that I hurt some puppies or like that.
Code:
neo4j-sh (0)$ start user=node(33), event=node(53) match user-[host?:HOSTING]-event, event-[?:ITEMS_NEEDED_FOR_EVENT]-neededItem, event-[?:ITEMS_SIGNED_UP_FOR]-signedUpToBringToEvent-[userSignedUp?:USER_SIGNED_UP]-user return host!=null as isHost, ID(neededItem) as neededItemId, neededItem.quantity as quantity, ID(signedUpToBringToEvent) as itemSignedUpId
==> SyntaxException: string matching regex `\z' expected but `!' found
==> Unfortunately, you have run into a syntax error that we don't have a nice message for.
==> By sending the query that produced this error to cypher@neo4j.org, you'll save the
==> puppies and get better error messages in our next release.
==>
==> Thank you, the Neo4j Team.
When I removed those in the return statement the query would run. Not actually returning any results, but would not be the data I was looking for.
Code:
neo4j-sh (0)$ start user=node(33), event=node(53) match user-[host?:HOSTING]-event, event-[:IITEMS_NEEDED_FOR_EVENT]-neededItem, event-[:ITEMS_SIGNED_UP_FOR]-signedUpToBringToEvent-[userSignedUp?:USER_SIGNED_UP]-user return ID(neededItem) as neededItemId, neededItem.quantity as quantity, ID(signedUpToBringToEvent) as itemSignedUpId
==> +------------------------------------------+
==> | neededItemId | quantity | itemSignedUpId |
==> +------------------------------------------+
==> +------------------------------------------+
==> 0 rows, 1 ms
==>
neo4j-sh (0)$ start user=node(33), event=node(53) match user-[host?:HOSTING]-event, event-[:ITEMS_NEEDED_FOR_EVENT]-neededItem, event-[:ITEMS_SIGNED_UP_FOR]-signedUpToBringToEvent-[userSignedUp?:USER_SIGNED_UP]-user return ID(neededItem) as neededItemId, neededItem.quantity as quantity, ID(signedUpToBringToEvent) as itemSignedUpId
==> +------------------------------------------+
==> | neededItemId | quantity | itemSignedUpId |
==> +------------------------------------------+
==> +------------------------------------------+
==> 0 rows, 35 ms
==>
neo4j-sh (0)$ start user=node(33), event=node(53) match user-[host?:HOSTING]-event, event-[?:ITEMS_NEEDED_FOR_EVENT]-neededItem, event-[?:ITEMS_SIGNED_UP_FOR]-signedUpToBringToEvent-[userSignedUp?:USER_SIGNED_UP]-user return ID(neededItem) as neededItemId, neededItem.quantity as quantity, ID(signedUpToBringToEvent) as itemSignedUpId
==> EntityNotFoundException: The property 'quantity' does not exist on Node[47]
The neededItem is a Relationship object. Well, I think I know where to fix that.
"event-[?:ITEMS_NEEDED_FOR_EVENT]-neededItem"
should be
"event-[neededItem?:ITEMS_NEEDED_FOR_EVENT]-item"
But I still get the puppies message with the !=null stuff for some reason.
Thanks
Mark