В конце концов, это действительно сводится к личному выбору и тому, что будет работать лучше всего для вашего приложения.
Требование * , которое MongoDB налагает на _id, заключается в том, что он уникален.Это может быть ObjectId (который предоставляется по умолчанию), строка, даже встроенный документ (хотя, насколько я помню, это не может быть массив).
В этом случае вы, вероятно, можете гарантировать, что код ISO являетсяуникальная ценность, и это может быть идеальной ценностью.У вас есть «известный» первичный ключ, который также полезен сам по себе, поскольку его можно идентифицировать, поэтому использование его вместо сгенерированного идентификатора, вероятно, является более разумной ставкой.Это также означает, что где бы вы ни «ссылались» на эту информацию в другой коллекции, вы можете сохранить код ISO вместо идентификатора объекта;те, кто просматривает ваши необработанные данные, могут сразу определить, на какую информацию указывает эта ссылка.
В качестве отступления:
Два больших преимущества ObjectId в том, что они могут быть сгенерированы уникально на нескольких машинах, процессах ипотоки без необходимости какого-либо отслеживания центральной последовательности сервером MongoDB.Они также хранятся как специальный тип в MongoDB, который использует только 12 байтов (в отличие от 24-байтового представления строковой версии ObjectID)