Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.
08-28-2020 08:07 PM
Hi — working on my first project with Neo4j and am looking for opinions about the best way to model something.
So the idea is there are (c:Collection) nodes and (d:Document) nodes. The (c:Collection) nodes can -[r:CONTAINS]-> a (d:Document).
The order of the documents contained by the collection is very important, and the order of the documents needs to be easy to change so I need to figure out the best way to store order values.
Option 1: It seems like the most natural way is to store the order is as a property of the relationship e.g. (c:Collection) -[r:CONTAINS {position: $position}]-> (d:Document), but I’m totally unclear on the best way to reorder the documents without having to make a database query to edit each relationship every time the order is changed.
Option 2: Alternatively, I could just store the order in an array as a property of the parent collection, which I could then revise with one query, but that feels non-idiomatic and clumsy.
Is there a way to take a map of key/values (id: position) as a param and use that to set the position property of each -[:CONTAINS]-> relationship for a collection without having to make a bunch of queries? Or another way to make option 1 work smoothly?
Or should I just use #2, or some other approach?
Thanks for any thoughts!
08-30-2020 12:45 PM
Would this work for your example?
08-30-2020 08:24 PM
Hi, the option given by @kathryn.moore is the best solution if each document only belongs to one collection. Otherwise, the best solution is the #2 for me because query building is easier and the performance is better.
Thanks
08-31-2020 07:41 AM
Chaining them all together is an interesting idea, but it seems like doing reorders might still require a bunch of writes? Maybe I'll just go with the #2 option of storing the order as an array in the parent collection, to keep the queries a little simpler.
Thanks!
All the sessions of the conference are now available online