Ответ 1
Нет, это совсем не плохо, и на самом деле встроенный ObjectId
достаточно ObjectId
в пределах индекса, поэтому, если вы считаете, что у вас есть что-то лучше, вы можете изменить значение поля _id
по умолчанию на что угодно.
Но, и это большое, но есть некоторые соображения при решении отойти от сформулированного по умолчанию ObjectId
, особенно при использовании автоматически увеличивающихся _ids, как показано здесь: http://docs.mongodb.org/manual/tutorial/create -an-Автоинкрементное поле /# автоинкрементируемых счетчики сбор
Многопоточность не такая большая проблема, потому что findAndModify
и атомарные блокировки могут позаботиться об этом, но тогда вы просто findAndModify
со своей первой проблемой. findAndModify
- не самая быстрая и не самая легкая функция, и при ее регулярном использовании отмечаются значительные падения производительности.
В любом случае, вы также должны учесть затраты на выполнение этого самостоятельно, даже без findAndModify
. Для каждой вставки у вас есть необходимость сделать дополнительный запрос. Изображение, имеющее уникальный идентификатор, который вы должны запрашивать уникальность каждый раз, когда вы хотите вставить, в конце концов, ваша скорость вставки упадет до уровня сканирования, и ваша блокировка будет накапливаться.
Конечно, ObjectId
действительно хорош, будучи уникальным, без необходимости проверять или формулировать свою уникальность, касаясь базы данных перед вставкой, следовательно, он не имеет таких накладных расходов.
Это говорит о том, что это не самая плохая идея в мире, и если вы думаете, что она подходит вашему сценарию, сделайте это, но помните, что если вам не требуется автоматическое увеличение идентификатора, это может быть бременем для вас.