Neo4j: count the size of array

3,536 views
Skip to first unread message

Ebtihel Hannachi

unread,
May 7, 2018, 5:07:01 AM5/7/18
to Neo4j
Hi, 
I am new in graph databases and I need your help, please!
so I have created a set of nodes, every node has as properties name and an array of integers.
I would like to know how to get all nodes have only a single integer???
I tried this query but it gave no results "MATCH (v) WITH length(v.value) as size WHERE size=1 RETURN v.name".

Michael Hunger

unread,
May 7, 2018, 5:10:58 AM5/7/18
to ne...@googlegroups.com
Your query looks ok, it could be shortened to:

Cypher is case sensitive so perhaps you have a misspelling somewhere?

match (v) where size(v.value) = 1 return v.name

you can check with

match (v) return v.name, size(v.value) limit 20


--
You received this message because you are subscribed to the Google Groups "Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email to neo4j+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Chris Vest

unread,
May 7, 2018, 5:31:20 AM5/7/18
to ne...@googlegroups.com
If you want this to be a fast thing to query for, you can put the array length in a separate property on the nodes, and then create an index for it. Then change your queries to be for `v.length = 1`, etc.

--
Chris Vest
System Engineer, Neo Technology
> To unsubscribe from this group and stop receiving emails from it, send an email to neo4j+un...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google Groups "Neo4j" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to neo4j+un...@googlegroups.com.

Ebtihel Hannachi

unread,
May 9, 2018, 5:47:55 PM5/9/18
to ne...@googlegroups.com
it worked form me with index !! i really appreciate it :)

2018-05-07 10:31 GMT+01:00 'Chris Vest' via Neo4j <ne...@googlegroups.com>:
If you want this to be a fast thing to query for, you can put the array length in a separate property on the nodes, and then create an index for it. Then change your queries to be for `v.length = 1`, etc.

--
Chris Vest
System Engineer, Neo Technology


> On 7 May 2018, at 11.10, 'Michael Hunger' via Neo4j <ne...@googlegroups.com> wrote:
>
> Your query looks ok, it could be shortened to:
>
> Cypher is case sensitive so perhaps you have a misspelling somewhere?
>
> match (v) where size(v.value) = 1 return v.name
>
> you can check with
>
> match (v) return v.name, size(v.value) limit 20
>
>
> On Sat, May 5, 2018 at 3:56 PM, Ebtihel Hannachi <hannachi...@gmail.com> wrote:
> Hi,
> I am new in graph databases and I need your help, please!
> so I have created a set of nodes, every node has as properties name and an array of integers.
> I would like to know how to get all nodes have only a single integer???
> I tried this query but it gave no results "MATCH (v) WITH length(v.value) as size WHERE size=1 RETURN v.name".
>
> --
> You received this message because you are subscribed to the Google Groups "Neo4j" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to neo4j+unsubscribe@googlegroups.com.

> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google Groups "Neo4j" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to neo4j+unsubscribe@googlegroups.com.

> For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email to neo4j+unsubscribe@googlegroups.com.

Ebtihel Hannachi

unread,
May 9, 2018, 5:55:34 PM5/9/18
to ne...@googlegroups.com
I have another question, please!
What about if I would like to delete a specific value from an array without knowing the indices of it in the array  (example array[10,20,30) and the result will be [10,30]).
any suggestions, please? I'll be so grateful!

Michael Hunger

unread,
May 9, 2018, 6:50:29 PM5/9/18
to ne...@googlegroups.com
return filter(x in [10,20,30] where x <> 20)

Ebtihel Hannachi

unread,
May 9, 2018, 7:19:55 PM5/9/18
to ne...@googlegroups.com
it works very well :) thank you
Reply all
Reply to author
Forward
0 new messages