What is "xid" in live loader upsert mode?


I have gone through this above Documentation , but I havent understood how internally this upsert and xid works.Can you please breif me about the following things?

  1. what is this “xid”?Is this Dgraph default or we should define it in our mutation?
    2)How live loader is using this xid to merge the nodes?
    3)Why my xid value is same as uid blank node value I am using while mutation, after data ingested?
    "dgraph.type": "Candidate",
    "uid": "_:user1",
    "userId": "user1",
    "WORKED_IN": [
        "dgraph.type": "Company",
        "uid": "_:ABC",
        "name": "abc"

when i query xids they show the blank node value I used while mutating

4)Is My live loader command correct?

dgraph live -f /home/sample.json -U  xid

My understanding:
xid refers to the blanknodes and merges them properly.

5)Is my understanding correct?

XID is a unique identifier, just like a Blank Node.

No, and, kind of yes. The main identifier in Dgraph is the Global UID. We use XIDs for external referencing and personal/custom usage.

It is an anonymous identifier, which means you can use any value you want.


It identify the XID and compare to the blank node used. Then it creates a upsert block with that XID in the query block so it will mutate in the right target.

It is not a merge, it is a upsert.

Cuz it is part of that procedure. Your job is to keep your blank nodes unique.


Not sure, I need to check.


BTW, all nodes has a XID field/predicate. Which were recorded during the procedure.