cypher - Neo4j - return results from match results starting from specific node -


lets have nodes connected in friend relationship. want query 2 of them each time, use skip , limit maintain this.

however, if adds friend in between calls, messes results (since 'whole list' pushed 1 index forward).

for example, lets had list of friends (ordered parameter):

a b c d

i query first time, b (skipped 0 , limited 2). adds friend named e, list e b c d. second query return b c (skipped 2 , limited 2). notice b returned twice because skipping method not aware of changes db had.

is there way return 2 each time starting considering previous query? example, if knew b last returned query, provide query , query 2 next, getting c d (which correct) instead of b c.

i tried finding solution , read start , indexes not sure how this.

thanks time!

you store timestamp when friend relationship created , order property.

when friend relationship created, add timestamp property:

match (a:person {name: "bob"}), (b:person {name: "mike"}) create (a)-[r:friend]->(b) set r.created = timestamp() 

then when paginating through friends 2 @ time can order created property:

match (a:person {name: "bob"})-[r:friend]->(friends) return friends skip {page_number_times_page_size} limit {page_size}  order r.created 

you can parameterize query page size (the number of friends return) , number of friends skip based on page want.


Comments