Below query inserts a new record. I tested and confirmed.
upsert {
query{
q(func: type(message)) @filter(eq(message-read, false))
{
v as uid
}
}
mutation {
set {
uid(v) <dgraph.type> "message" .
uid(v) <isRead> "true" .
}
}
}
I found a workaround with conditional mutation.
upsert {
query{
q(func: type(message)) @filter(eq(message-read, false))
{
v as uid
}
}
mutation @if(gt(len(v),0)) {
set {
uid(v) <dgraph.type> "message" .
uid(v) <isRead> "true" .
}
}
}
However, the upsert is not a good naming as it confuses query writer.
I would like to have an update mode without giving an if mutation condition ensuring there is no insert.