Difference
Difference( source, diff, ... )
Difference( source, diff, ... )
Difference( source, diff, ... )
Difference( source, diff, ... )
difference( source, diff, ... )
Difference( source, diff, ... )
Description
The Difference
function compares the source
, which can be an
Array or Set,
with the item(s) provided by diff
, and returns all of the items that
exist in source
that do not exist in diff
.
The run time of To work around this, you may specify a larger query timeout via the driver that you are using. |
Parameters
Argument | Type | Definition and Requirements |
---|---|---|
|
The source array or set to be compared.
The type of |
|
|
One or more difference array or set reference objects.
The type of all items in |
Returns
When source
is an array, an array of the items in source
that are
missing from diff
.
When source
is a set reference, a set reference object of the items in
source
that are missing from diff
.
Examples
The following query takes the source Set Reference (i.e. set reference)
which is created by locating the search term "fire" in the index named
"spells_by_element" and removing all difference Set Reference which was
created by locating the search term "water" in the Index named
"spells_by_element". The Paginate
function materialized the results of the Difference
operation in an
array of type Page.
client.Query(
Paginate(
Difference(
Match(Index("spells_by_element"), "fire"),
Match(Index("spells_by_element"), "water"))));
{ "data": [ { "@ref": "classes/spells/181388642046968320" } ] }
curl https://db.fauna.com/ \
-u fnAChGwBcAACAO70ziE0cfROosNJHdgBmJU1PgpL: \
-d '{
"paginate": {
"difference": [
{
"match": { "index": "spells_by_element" },
"terms": "fire"
},
{
"match": { "index": "spells_by_element" },
"terms": "water"
}
]
}
}'
HTTP/1.1 200 OK
{
"resource": {
"data": [ { "@ref": "classes/spells/181388642046968320" } ]
}
}
result, _ := client.Query(
f.Paginate(
f.Difference(
f.MatchTerm(f.Index("spells_by_element"), "fire"),
f.MatchTerm(f.Index("spells_by_element"), "water"),
),
),
)
fmt.Println(result)
map[data:[{181388642046968320 0xc420239980 <nil>}]]
System.out.println(
client.query(
Paginate(
Difference(
Match(Index(Value("spells_by_element")), Value("fire")),
Match(Index(Value("spells_by_element")), Value("water"))))
).get());
{
data: [
ref(id = "181388642046968320", collection = ref(id = "spells", collection = ref(id = "collections")))
]
}
client.query(
q.Paginate(
q.Difference(
q.Match(q.Index('spells_by_element'), 'fire'),
q.Match(q.Index('spells_by_element'), 'water'),
)
)
)
.then((ret) => console.log(ret))
{ data:
[ Ref(id=181388642046968320, collection=Ref(id=spells, collection=Ref(id=collections))) ] }
client.query(
q.paginate(
q.difference(
q.match(q.index("spells_by_element"), "fire"),
q.match(q.index("spells_by_element"), "water")
)
))
{ "data": [ { "@ref": "classes/spells/181388642046968320" } ] }
client.query(
Paginate(
Difference(
Match(Index("spells_by_element"), "fire"),
Match(Index("spells_by_element"), "water"))))
{ "data": [ { "@ref": "classes/spells/181388642046968320" } ] }
The following query is similar to the example above, but it returns document events instead of the index tuples.
client.Query(
Paginate(
Difference(
Match(Index("spells_by_element"), "fire"),
Match(Index("spells_by_element"), "water")),
events: true));
{
"data": [
{
"ts": 1509244539203043,
"action": "create",
"resource": { "@ref": "classes/spells/181388642046968320" }
},
{
"ts": 1509244539223511,
"action": "create",
"resource": { "@ref": "classes/spells/181388642071085568" }
}
]
}
curl https://db.fauna.com/ \
-u fnAChGwBcAACAO70ziE0cfROosNJHdgBmJU1PgpL: \
-d '{
"paginate": {
"difference": [
{
"match": { "index": "spells_by_element" },
"terms": "fire"
},
{
"match": { "index": "spells_by_element" },
"terms": "water"
}
]
},
"events": true
}'
HTTP/1.1 200 OK
{
"resource": {
"data": [
{
"ts": 1509244539203043,
"action": "create",
"resource": { "@ref": "classes/spells/181388642046968320" }
},
{
"ts": 1509244539223511,
"action": "create",
"resource": { "@ref": "classes/spells/181388642071085568" }
}
]
}
}
result, _ := client.Query(
f.Paginate(
f.Events(
f.Difference(
f.MatchTerm(f.Index("spells_by_element"), "fire"),
f.MatchTerm(f.Index("spells_by_element"), "water"),
),
),
),
)
fmt.Println(result)
map[data:[
map[ts:1509244539203043 action:add document:{181388642046968320 0xc420261160 <nil>}]
map[ts:1509244539223511 action:add document:{181388642071085568 0xc420261420 <nil>}]
]]
System.out.println(
client.query(
Paginate(
Events(
Difference(
Match(Index(Value("spells_by_element")), Value("fire")),
Match(Index(Value("spells_by_element")), Value("water"))
)
)
)
).get());
{
data: [
{
ts: 1527002946726063,
action: "add",
document: ref(id = "181388642071085568", collection = ref(id = "spells", collection = ref(id = "collections")))
},
{
ts: 1527002946795516,
action: "add",
document: ref(id = "181388642046968320", collection = ref(id = "spells", collection = ref(id = "collections")))
}
]
}
client.query(
q.Paginate(
q.Events(
q.Difference(
q.Match(q.Index('spells_by_element'), 'fire'),
q.Match(q.Index('spells_by_element'), 'water'),
)
)
)
)
.then((ret) => console.log(ret))
{ data:
[ { ts: 1526677776479051,
action: 'add',
document:
Ref(id=181388642046968320, collection=Ref(id=spells, collection=Ref(id=collections))) },
{ ts: 1526677776479051,
action: 'add',
document:
Ref(id=181388642071085568, collection=Ref(id=spells, collection=Ref(id=collections))) } ] }
client.query(
q.paginate(
q.difference(
q.match(q.index("spells_by_element"), "fire"),
q.match(q.index("spells_by_element"), "water")
),
events=True
))
{
"data": [
{
"ts": 1509244539203043,
"action": "create",
"resource": { "@ref": "classes/spells/181388642046968320" }
},
{
"ts": 1509244539223511,
"action": "create",
"resource": { "@ref": "classes/spells/181388642071085568" }
}
]
}
client.query(
Paginate(
Difference(
Match(Index("spells_by_element"), "fire"),
Match(Index("spells_by_element"), "water")),
events = true))
{
"data": [
{
"ts": 1509244539203043,
"action": "create",
"resource": { "@ref": "classes/spells/181388642046968320" }
},
{
"ts": 1509244539223511,
"action": "create",
"resource": { "@ref": "classes/spells/181388642071085568" }
}
]
}
The following query demonstrates how various arrays are compared:
Value result = await client.Query(
Arr(
Difference(Arr("A", "B", "C"), Arr("B", "C", "D")),
Difference(Arr("B", "C", "D"), Arr("A", "B", "C")),
Difference(Arr("A", "B", "C"), Arr("C", "B", "A"))
)
);
[
[
"A"
],
[
"D"
],
[]
]
Not available in this language yet.
result, err := client.Query(
f.Arr{
f.Difference(f.Arr{"A", "B", "C"}, f.Arr{"B", "C", "D"}),
f.Difference(f.Arr{"B", "C", "D"}, f.Arr{"A", "B", "C"}),
f.Difference(f.Arr{"A", "B", "C"}, f.Arr{"C", "B", "A"})})
fmt.Println(result)
[[A] [D] []]
System.out.println(
client.query(
Arr(
Difference(
Arr(Value("A"), Value("B"), Value("C")),
Arr(Value("B"), Value("C"), Value("D"))
),
Difference(
Arr(Value("B"), Value("C"), Value("D")),
Arr(Value("A"), Value("B"), Value("C"))
),
Difference(
Arr(Value("A"), Value("B"), Value("C")),
Arr(Value("C"), Value("B"), Value("A"))
)
)
).get());
[["A"], ["D"], []]
client.query([
q.Difference(['A', 'B', 'C'], ['B', 'C', 'D']),
q.Difference(['B', 'C', 'D'], ['A', 'B', 'C']),
q.Difference(['A', 'B', 'C'], ['C', 'B', 'A']),
])
.then((ret) => console.log(ret))
[ [ 'A' ], [ 'D' ], [] ]
print(client.query(
[
q.difference(['A', 'B', 'C'], ['B', 'C', 'D']),
q.difference(['B', 'C', 'D'], ['A', 'B', 'C']),
q.difference(['A', 'B', 'C'], ['C', 'B', 'A']),
]
))
[['A'], ['D'], []]
println(Await.result(
client.query(
Arr(
Difference(Arr("A", "B", "C"), Arr("B", "C", "D")),
Difference(Arr("B", "C", "D"), Arr("A", "B", "C")),
Difference(Arr("A", "B", "C"), Arr("C", "B", "A"))
)
),
5.seconds
))
[["A"], ["D"], []]
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!