我前公司都是讓 DB 自己生成 id,確保不會不小心重複
如果商業需求上,資料有自己的編號,比方說學生的「學號」,那就用新欄位存,並建立 index 設為 unique
自己設 id 可能在寫測試的時候,這個資料設 "123"、那個資料設 "456",簡單方便
建議使用自動生成的id,擴充性較佳,不會因商業規則改變,要重建Collection,如果有限制規則或唯一識別鍵,可建立索引。
通常情況下,讓 MongoDB 自動生成 _id
是一個比較常見的做法,因為它簡單、方便,並且能夠保證每條記錄的唯一性。MongoDB 自動生成的 _id
是一個 ObjectId,它是由時間戳、機器ID、進程ID、隨機數等組成的,可以保證在大多數情況下都是唯一的。
在大多數情況下,自動生成的 _id
是完全足夠的,而且你無需擔心其缺陷。然而,在某些特定情況下,可能會考慮手動設置 _id
的值,例如:
關聯數據:如果你有多個集合之間存在關聯關係,並且需要在不同集合中使用相同的 _id
來進行關聯,那麼可能會考慮手動設置 _id
的值,以確保這些關聯關係正確。
數據遷移:在數據遷移的過程中,有時可能需要保留原始數據庫中的 _id
值,這樣可以更輕鬆地追蹤數據的來源和變化。
自定義ID方案:在某些情況下,你可能有自己的一套ID生成方案,並且需要將其與 _id
關聯起來。
舉個例子,假設你有一個部落格系統,其中包含文章(articles
)和評論(comments
)兩個集合。每篇文章和每條評論都有一個唯一的ID,並且評論需要關聯到對應的文章上。在這種情況下,你可能會考慮手動設置文章和評論的 _id
值,以確保它們能夠正確關聯。
總的來說,大部分情況下,讓 MongoDB 自動生成 _id
是一個簡單而有效的做法。只有在特定的情況下,如需要關聯數據或者進行數據遷移時,才需要考慮手動設置 _id
的值。