Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.
01-22-2019 08:55 AM
I don't have a lot of experience with Neo4j and I am in the middle of building out a new database and I am not 100% certain the best way to model ranges of values. So I have nodes that have a lot of min/max values and I would like to be able to intuitively write queries that will show nodes that fall in some range or at least be able to group things together spatially using this data.
Example:
NodeA: min = 3, max = 10
NodeB: min=5, max=12
NodeC: min= 12, max=15
Query: Which Nodes have some value between 6 and 11?
Result: NodeA and NodeB
I feel like there is a way to do this using the Spatial data types but I am not certain. Or should I just go with setting the min, max as float properties and doing some type of greater than less than logic?
Thanks
01-22-2019 09:11 AM
If the number of possible min/max values is small, you could break them out into nodes and do something like this:
MATCH (min:Value { value: 3 })-[:min]-(target:Node)-[:max]-(max:Value { value: 7 })
RETURN target
This will be better if you have a very large number of target
nodes, and a relatively small number of possible Values
which could be a minimum or a maximum.
If min and max could be any integer or float, and you could have zillions of them, then you'll be better off putting a min
and max
property on each node, indexing those, and using the <
, >
logic you suggest.
01-22-2019 09:53 AM
Thanks for the quick reply!
I think I'm gonna have to go with the <> logic.
01-23-2019 06:34 PM
Or just use two properties like SET n.minValue=3, n.maxValue=5
Or an array with two entries: SET n.value: [3,5]
All the sessions of the conference are now available online