Какое лучше выбрать поле для первичного ключа в MongoDB?
Нужно реализовать вэб-приложение на MongoDB. Одним из нюансов, с которым я столкнулся, оказался первичный ключ в документе. MongoDB по умолчанию предлагает своё уникальное поле "_id", которое в большинстве случаев удовлетворяет все потребности. Но при разработке REST API, к примеру обращение по адресу "/users/574e7d2d8c772c53d12200d5", вообще никак не смотрится, хочется что-то вроде этого "/users/id000000001", или этого "/users/1".
Возникает необходимость выбирать, либо воспользоватся рекомендациями в официальной документации, в которой описывается два варианта (счётчик и цикл), либо создавать собственное поле (что-то вроде "userID", или "id") со своими пользовательскими функциями. Кроме того, в официальной документации не раз упоминается, что именно с полем "_id" MongoDB будет себя чувствовать лучше всего, как при операциях, так и при масштабировании, поэтому хочется наделить удобством не в ущерб производительности.
Как лучше будет выйти из этой ситуации, или быть может уже существует "хорошая практика" по этому поводу (я искал в интернете, но конкретных решений не увидел)? Может стоит оставить автоматическое поле для внутренних нужд MongoDB, и добавить к этому документу дополнительное, по которому как раз таки будут происходить выборки?
Вот как раз я так и задумывался, чтобы оставить поле "_id", и добавить своё "id", присвоив ему индекс с опцией "уникальный". Просто смущает тот факт, что будет два идентификатора в документе, и может быть это как то повлияет на производительность.
Nikolas Lindemann: чем больше индексов, тем медленнее вставка/изменение + больше памяти юзается.
Если вам оригинальный _id не понадобится, то пишите в _id.