coll.intersection

Description

Finds the common elements between two lists, returning a new list containing only the elements that appear in both input lists.

Syntax

flex.coll.intersection(list1, list2)

Parameters

| Parameter | Type | Required | Description | |———–|——|———-|————-| | list1 | list | Yes | The first list | | list2 | list | Yes | The second list |

Returns

Type: list

A new list containing only the elements that exist in both input lists. Preserves the order from the first list.

Examples

Example 1: Basic Intersection

WITH [1, 2, 3, 4] AS a, [3, 4, 5, 6] AS b
RETURN flex.coll.intersection(a, b) AS result

Output:

result
-------
[3, 4]

Example 2: Finding Common Tags

MATCH (d1:Document {id: 'doc1'})
MATCH (d2:Document {id: 'doc2'})
WITH flex.coll.intersection(d1.tags, d2.tags) AS commonTags
WHERE size(commonTags) > 0
RETURN commonTags

Example 3: Finding Users with Shared Interests

MATCH (u1:User {id: $userId1})
MATCH (u2:User {id: $userId2})
WITH flex.coll.intersection(u1.interests, u2.interests) AS sharedInterests
RETURN u1.name, u2.name, sharedInterests, size(sharedInterests) AS commonCount

Example 4: Filter by Allowed Values

WITH ['admin', 'read', 'write', 'delete'] AS allowed
MATCH (u:User)
WITH u, flex.coll.intersection(u.permissions, allowed) AS validPerms
RETURN u.name, validPerms

Notes

  • Returns elements that exist in both lists
  • Preserves the order from the first list
  • If an element appears multiple times in list1, each occurrence is checked against list2
  • Efficient implementation using Set for fast lookup
  • Equivalent to mathematical set intersection operation

See Also

  • coll.union - Combine all unique elements from both lists
  • sim.jaccard - Calculate similarity coefficient using intersection