Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Firestore: Are ids unique in the collection or globally?

For the structure of my database I need to know if the automatically generated identifiers in Firebase Cloud Firestore are unique in the collection or in the whole database.

How to do that?

like image 953
Arco Avatar asked Oct 07 '17 09:10

Arco


People also ask

Can two documents have the same ID in firestore?

New document with same ID should not be allowed in the same collection. It should be possible to fetch an already existing document from a previous import.

How do I get unique data from firestore?

There is no specific API to retrieve unique values from Cloud Firestore. You will have to retrieve all relevant documents and determine the unique names in your own code. Alternatively, consider adding a document with unique names and update that with every write.

How do I prevent duplicates in firestore?

The best way to prevent duplicate nodes in firebase realtime database or duplicate documents in firebase firestore database is to keep a check in the app itself to verify that the record to be inserted doesn't already exist in the database by querying for data using key field in where clause.


1 Answers

The keys generated by calling add() in Firestore are not tied to the collection on which you call add(). Instead they are random identifiers that are statistically guaranteed to be unique. In the case of Firestore (and Firebase Realtime Database) these keys are generated client-side.

If you're interested, have a look at how the Firestore JavaScript SDK implements the logic:

  1. add calls doc()

  2. doc calls AutoId.newId()

  3. AutoId.newId() generates a client-side ID

In itself the logic is similar to how the Firebase Realtime Database generates its push IDs. The main difference seems to be that Firestore's auto-generated keys are not based on the local timestamp, so they cannot be meaningfully used to order the documents in the collection.

like image 89
Frank van Puffelen Avatar answered Sep 18 '22 04:09

Frank van Puffelen