6.4. Co-favorited places

Figure 6.4. Graph

Co-favorited places — users who like x also like y

Find places that people also like who favorite this place:

  • Determine who has favorited place x.
  • What else have they favorited that is not place x.

Query 

MATCH (place)<-[:favorite]-(person)-[:favorite]->(stuff)
WHERE place.name = 'CoffeeShop1'
RETURN stuff.name, count(*)
ORDER BY count(*) DESC , stuff.name

The list of places that are favorited by people that favorited the start place.

Result

stuff.namecount(*)
3 rows

"MelsPlace"

2

"CoffeShop2"

1

"SaunaX"

1

Try this query live create (_0 {`name`:"CoffeeShop2"}) create (_1 {`name`:"Joe"}) create (_2 {`name`:"SaunaX"}) create (_3 {`name`:"CoffeeShop3"}) create (_4 {`name`:"Cosy"}) create (_5 {`name`:"CoffeShop2"}) create (_6 {`name`:"Cool"}) create (_7 {`name`:"MelsPlace"}) create (_8 {`name`:"Jill"}) create (_9 {`name`:"CoffeeShop1"}) create (_0)-[:`tagged`]->(_6) create (_1)-[:`favorite`]->(_7) create (_1)-[:`favorite`]->(_2) create (_1)-[:`favorite`]->(_9) create (_3)-[:`tagged`]->(_4) create (_7)-[:`tagged`]->(_6) create (_7)-[:`tagged`]->(_4) create (_8)-[:`favorite`]->(_5) create (_8)-[:`favorite`]->(_7) create (_8)-[:`favorite`]->(_9) create (_9)-[:`tagged`]->(_4) create (_9)-[:`tagged`]->(_6) ; MATCH (place)<-[:favorite]-(person)-[:favorite]->(stuff) WHERE place.name = 'CoffeeShop1' RETURN stuff.name, count(*) ORDER BY count(*) DESC, stuff.name