Intersection
Intersection( group, ... )
Intersection( group, ... )
Intersection( group, ... )
Intersection( group, ... )
intersection( group, ... )
Intersection( group, ... )
Description
The Intersection
function compares all of the items in each group
,
which can be an Array or
SetRef, and returns the elements that appear in
every provided group
.
The run time of To work around this, you may specify a larger query timeout via the driver that you are using. |
Returns
When group
is an array, an array of the items that appear in every
provided group
.
When group
is a set reference, a set reference of the items that
appear in every provided group.
Examples
The following query intersects the SetRef (i.e. set reference) returned
by locating the search term "fire" in the index named
"spells_by_element" with the SetRef returned by locating the search term
"water" in the Index named "spells_by_element". The
Paginate function executes the SetRef
and returns the results of the Intersect
operation in an array of type
Page.
client.Query(
Paginate(
Intersection(
Match(Index("spells_by_element"), "fire"),
Match(Index("spells_by_element"), "water"))));
{ "data": [ { "@ref": "classes/spells/181388642071085568" } ] }
curl https://db.fauna.com/ \
-u fnAChGwBcAACAO70ziE0cfROosNJHdgBmJU1PgpL: \
-d '{
"paginate": {
"intersection": [
{
"match": { "index": "spells_by_element" },
"terms": "fire"
},
{
"match": { "index": "spells_by_element" },
"terms": "water"
}
]
}
}'
HTTP/1.1 200 OK
{
"resource": {
"data": [ { "@ref": "classes/spells/181388642071085568" } ]
}
}
result, _ := client.Query(
f.Paginate(
f.Intersection(
f.MatchTerm(f.Index("spells_by_element"), "fire"),
f.MatchTerm(f.Index("spells_by_element"), "water"),
),
),
)
fmt.Println(result)
map[data:[{181388642071085568 0xc4202920a0 <nil>}]]
System.out.println(
client.query(
Paginate(
Intersection(
Match(Index(Value("spells_by_element")), Value("fire")),
Match(Index(Value("spells_by_element")), Value("water"))
)
)
).get());
{
data: [
ref(id = "181388642071085568", collection = ref(id = "spells", collection = ref(id = "collections")))
]
}
client.query(
q.Paginate(
q.Intersection(
q.Match(q.Index('spells_by_element'), 'fire'),
q.Match(q.Index('spells_by_element'), 'water'),
)
)
)
.then((ret) => console.log(ret))
{ data: [ Ref(id=181388642071085568, collection=Ref(id=spells, collection=Ref(id=collections))) ] }
client.query(
q.paginate(
q.intersection(
q.match(q.index("spells_by_element"), "fire"),
q.match(q.index("spells_by_element"), "water")
)
))
{ "data": [ { "@ref": "classes/spells/181388642071085568" } ] }
client.query(
Paginate(
Intersection(
Match(Index("spells_by_element"), "fire"),
Match(Index("spells_by_element"), "water"))))
{ "data": [ { "@ref": "classes/spells/181388642071085568" } ] }
The following query demonstrates how various arrays are evaluated:
Value result = await client.Query(
Arr(
Intersection(Arr("A", "B"), Arr("C", "D")),
Intersection(Arr("A", "B"), Arr("B", "C")),
Intersection(Arr("A", "B", "C"), Arr("B", "C"), Arr("B", "C", "D")),
Intersection(Arr("A", "B", "C"), Arr("B", "B"), Arr("B"))
)
);
[
[],
[
"B"
],
[
"B",
"C"
],
[
"B"
]
]
Not available in this language yet.
result, err := client.Query(
f.Arr{
f.Intersection(f.Arr{"A", "B"}, f.Arr{"C", "D"}),
f.Intersection(f.Arr{"A", "B"}, f.Arr{"B", "C"}),
f.Intersection(f.Arr{"A", "B", "C"}, f.Arr{"B", "C"}, f.Arr{"B", "C", "D"}),
f.Intersection(f.Arr{"A", "B", "C"}, f.Arr{"B", "B"}, f.Arr{"B"})})
fmt.Println(result)
[[] [B] [B C] [B]]
System.out.println(
client.query(
Arr(
Intersection(
Arr(Value("A"), Value("B")),
Arr(Value("C"), Value("D"))
),
Intersection(
Arr(Value("A"), Value("B")),
Arr(Value("B"), Value("C"))
),
Intersection(
Arr(Value("A"), Value("B"), Value("C")),
Arr(Value("B"), Value("C")),
Arr(Value("B"), Value("C"), Value("D"))
),
Intersection(
Arr(Value("A"), Value("B"), Value("C")),
Arr(Value("B"), Value("B")),
Arr(Value("B"))
)
)
).get());
[[], ["B"], ["B", "C"], ["B"]]
client.query([
q.Intersection(['A', 'B'], ['C', 'D']),
q.Intersection(['A', 'B'], ['B', 'C']),
q.Intersection(['A', 'B', 'C'], ['B', 'C'], ['B', 'C', 'D']),
q.Intersection(['A', 'B', 'C'], ['B', 'B'], ['B']),
])
.then((ret) => console.log(ret))
[ [], [ 'B' ], [ 'B', 'C' ], [ 'B' ] ]
print(client.query(
[
q.intersection(["A", "B"], ["C", "D"]),
q.intersection(["A", "B"], ["B", "C"]),
q.intersection(["A", "B", "C"], ["B", "C"], ["B", "C", "D"]),
q.intersection(["A", "B", "C"], ["B", "B"], ["B"]),
]
))
[[], ['B'], ['B', 'C'], ['B']]
println(Await.result(
client.query(
Arr(
Intersection(Arr("A", "B"), Arr("C", "D")),
Intersection(Arr("A", "B"), Arr("B", "C")),
Intersection(Arr("A", "B", "C"), Arr("B", "C"), Arr("B", "C", "D")),
Intersection(Arr("A", "B", "C"), Arr("B", "B"), Arr("B"))
)
),
5.seconds
))
[[], ["B"], ["B", "C"], ["B"]]
Is this article helpful?
Tell Fauna how the article can be improved:
Visit Fauna's forums
or email docs@fauna.com
Thank you for your feedback!