Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.
06-21-2022 06:24 PM
Hi Neo4j community,
I appreciate your great support as always. I have a dataset with Customer vertices and Order vertices and these are connected in the following way
(Customer) --[:PURCHASED]--> (Order)
and no edges going from Order to Customer.
Now I would like to find out what the minimum, maximum and average amount of Orders per Customer are and perform the following query.
MATCH (c:Customer) WITH
SIZE([(c)--(o:Order) | o]) AS amount
RETURN min(amount), max(amount), avg(amount)
This works perfectly fine. However, I would like to know if I can speed things up as the Customer vertices have the property 'customerID' which is unique and I have enforced a uniqueness constraint with respective index on 'customerID' for Customer vertices.
I have tried several approaches, but cannot quite get there and I am not even sure if this is possible.
Thank you very much for any help.
Best,
Philipp
06-22-2022 03:04 AM - edited 06-23-2022 10:03 AM
MATCH (c:Customer)
WITH size((c)-[:PURCHASED]->()) AS outdegree
RETURN min(outdegree) AS min, max(outdegree) AS max, avg(outdegree) AS avg
DO NOT specify a label in the size function while using a pattern for this use case, otherwise Neo4j won't be able to use the internal outgoing relationship counter in each customer node.
By the way, a vertice is a part of a geometric structure as being just a point in the space, a node is much more complex so that's why we call them node.
06-22-2022 05:47 AM
I do not think so, since you are not searching on anything specific. Your solution creates a list and uses list comprehension to calculate the count. You could try an alternative approach, like the following:
match(n:Customer)
optional match(n)--(m:Order)
with n, count(m) as count
return min(count) as min, max(count) as max, avg(count) as avg
06-22-2022 06:13 PM
Hi,
Thank you very much for both your answers.
This definitely helps to speed up the query and thank you for letting me know that I won't be able to make use of the index in this case as I was trying to make this work somehow for quite some time.
Much appreciated.
Best,
Philipp
All the sessions of the conference are now available online