this post was submitted on 21 Jun 2023
2 points (100.0% liked)

Go programming language discussion

1280 readers
1 users here now

founded 5 years ago
MODERATORS
 

I'm trying to find a bson struct tag to create a unique index just like the one in the image attached to this post but for mongodb. i tried searching and i found nothing Close to what i need but this stackoverflow post https://stackoverflow.com/questions/30831316/how-to-specify-a-struct-with-a-multi-column-unique-index-for-gorm

you are viewing a single comment's thread
view the rest of the comments
[โ€“] [email protected] 1 points 1 year ago* (last edited 1 year ago) (1 children)

Why don't you just set the id to whatever ( e.g UUID) you want in your struct constructor. Alternatively I guess there are also mongodb specific client libraries for Go

The documentation of package mongo says for example ``` If the document does not have an _id field when transformed into BSON, one will be added automatically to the marshalled document.

[โ€“] [email protected] 1 points 1 year ago

Hello, Thanks for responding. ^^

i didn't want to make any changes to the id field.

i have a user struct like this.

type User struct {
	ID         primitive.ObjectID `bson:"_id,omitempty" json:"id"`
	FirstName  string             `bson:"firstname" json:"firstname"`
	LastName   string             `bson:"lastname" json:"lastname"`
	Email      string             `bson:"email" index:"email" json:"email"`
 }

i wanted the Email field to be unique, just like the ID. so when a new user tries to create an account with the same email, it'll return an error.

it isn't a problem anymore because i figured out a way... i created a custom struct tag that validates whether a user with the same email exist in the database.