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. |
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 SetRef (i.e. set reference) which is
created by locating the search term "fire" in the index named
"spells_by_element" and removing all difference SetRef 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")
)
)
);
ObjectV(data: Arr(RefV(id = "181388642046968320", collection = RefV(id = "spells", collection = RefV(id = "collections")))))
result, err := client.Query(
f.Paginate(
f.Difference(
f.MatchTerm(f.Index("spells_by_element"), "fire"),
f.MatchTerm(f.Index("spells_by_element"), "water"))))
if err != nil {
fmt.Fprintln(os.Stderr, err)
} else {
fmt.Println(result)
}
map[data:[{181388642046968320 0xc000142270 0xc000142270 <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))
.catch((err) => console.error('Error: %s', err))
{ data: [ Ref(Collection("spells"), "181388642046968320") ] }
result = client.query(
q.paginate(
q.difference(
q.match(q.index("spells_by_element"), "fire"),
q.match(q.index("spells_by_element"), "water")
)
)
)
print(result)
{'data': [Ref(id=181388642046968320, collection=Ref(id=spells, collection=Ref(id=collections)))]}
client.query(
Paginate(
Difference(
Match(Index("spells_by_element"), "fire"),
Match(Index("spells_by_element"), "water"))))
{data: [ref(id = "181388642046968320", collection = ref(id = "spells", collection = ref(id = "collections")))]}
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
)
);
ObjectV(data: Arr(ObjectV(ts: LongV(1603756252570000),action: StringV(add),document: RefV(id = "181388642046968320", collection = RefV(id = "spells", collection = RefV(id = "collections")))), ObjectV(ts: LongV(1603756252570000),action: StringV(add),document: RefV(id = "181388642071085568", collection = RefV(id = "spells", collection = RefV(id = "collections")))), ObjectV(ts: LongV(1603756252570000),action: StringV(remove),document: RefV(id = "181388642071085568", collection = RefV(id = "spells", collection = RefV(id = "collections"))))))
result, err := client.Query(
f.Paginate(
f.Events(
f.Difference(
f.MatchTerm(f.Index("spells_by_element"), "fire"),
f.MatchTerm(f.Index("spells_by_element"), "water")))))
if err != nil {
fmt.Fprintln(os.Stderr, err)
} else {
fmt.Println(result)
}
map[data:[map[action:add document:{181388642046968320 0xc0000b1530 0xc0000b1530 <nil>} ts:1603747155400000] map[action:add document:{181388642071085568 0xc0000b1710 0xc0000b1710 <nil>} ts:1603747155400000] map[action:remove document:{181388642071085568 0xc000160090 0xc000160090 <nil>} ts:1603747155400000]]]
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: 1594315458560000, action: "add", document: ref(id = "181388642046968320", collection = ref(id = "spells", collection = ref(id = "collections")))}, {ts: 1594315458560000, action: "add", document: ref(id = "181388642071085568", collection = ref(id = "spells", collection = ref(id = "collections")))}, {ts: 1594315458560000, action: "remove", document: ref(id = "181388642071085568", 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))
.catch((err) => console.error('Error: %s', err))
{
data: [
{
ts: 1592269416750000,
action: 'add',
document: Ref(Collection("spells"), "181388642046968320")
},
{
ts: 1592269416750000,
action: 'add',
document: Ref(Collection("spells"), "181388642071085568")
},
{
ts: 1592269416750000,
action: 'remove',
document: Ref(Collection("spells"), "181388642071085568")
}
]
}
result = client.query(
q.paginate(
q.difference(
q.match(q.index("spells_by_element"), "fire"),
q.match(q.index("spells_by_element"), "water")
),
events=True
)
)
print(result)
{'data': [{'ts': 1592859673180000, 'action': 'add', 'document': Ref(id=181388642046968320, collection=Ref(id=spells, collection=Ref(id=collections)))}, {'ts': 1592859673180000, 'action': 'add', 'document': Ref(id=181388642071085568, collection=Ref(id=spells, collection=Ref(id=collections)))}, {'ts': 1592859673180000, 'action': 'remove', 'document': Ref(id=181388642071085568, collection=Ref(id=spells, collection=Ref(id=collections)))}]}
client.query(
Paginate(
Difference(
Match(Index("spells_by_element"), "fire"),
Match(Index("spells_by_element"), "water")),
events = true))
{data: [{ts: 1594667380890000, action: "add", document: ref(id = "181388642046968320", collection = ref(id = "spells", collection = ref(id = "collections")))}, {ts: 1594667380890000, action: "add", document: ref(id = "181388642071085568", collection = ref(id = "spells", collection = ref(id = "collections")))}, {ts: 1594667380890000, action: "remove", document: ref(id = "181388642071085568", collection = ref(id = "spells", collection = ref(id = "collections")))}]}
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"))
)
);
Arr(Arr(StringV(A)), Arr(StringV(D)), Arr())
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"}),
})
if err != nil {
fmt.Fprintln(os.Stderr, err)
} else {
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))
.catch((err) => console.error('Error: %s', err))
[ [ 'A' ], [ 'D' ], [] ]
result = 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']),
]
)
print(result)
[['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!