iT邦幫忙

0

關於MongoDB的id問題

  • 分享至 

  • xImage

本人使用SQL多年, 使用redis有兩年經驗, 最近計劃開始使用MongoDB在正式的專案上, 想請教關於id的問題, 我知道新增一筆資料它會自動生成 _id, 我也知道可以自己給 _id賦值。但通常你們會採取哪一種方式?

我在使用上並沒有特殊需求, 我打算讓_id自動生成, 但不確定這樣會不會有缺點。另外想問, 有什麼情況下會建議自己設 _id的值? 如果有, 能否舉個列子, 謝謝

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
Chikuwa
iT邦新手 4 級 ‧ 2024-04-04 15:39:27

我前公司都是讓 DB 自己生成 id,確保不會不小心重複
如果商業需求上,資料有自己的編號,比方說學生的「學號」,那就用新欄位存,並建立 index 設為 unique

自己設 id 可能在寫測試的時候,這個資料設 "123"、那個資料設 "456",簡單方便

0
Yaowen
iT邦研究生 4 級 ‧ 2024-04-05 00:25:53

我目前是都讓 DB 自己生成 id
除非你有特殊規則是 id 一定不會重複的

4
I code so I am
iT邦高手 1 級 ‧ 2024-04-05 13:05:45

建議使用自動生成的id,擴充性較佳,不會因商業規則改變,要重建Collection,如果有限制規則或唯一識別鍵,可建立索引

0
熊熊工程師
iT邦研究生 2 級 ‧ 2024-04-15 11:05:08

通常情況下,讓 MongoDB 自動生成 _id 是一個比較常見的做法,因為它簡單、方便,並且能夠保證每條記錄的唯一性。MongoDB 自動生成的 _id 是一個 ObjectId,它是由時間戳、機器ID、進程ID、隨機數等組成的,可以保證在大多數情況下都是唯一的。

在大多數情況下,自動生成的 _id 是完全足夠的,而且你無需擔心其缺陷。然而,在某些特定情況下,可能會考慮手動設置 _id 的值,例如:

  1. 關聯數據:如果你有多個集合之間存在關聯關係,並且需要在不同集合中使用相同的 _id 來進行關聯,那麼可能會考慮手動設置 _id 的值,以確保這些關聯關係正確。

  2. 數據遷移:在數據遷移的過程中,有時可能需要保留原始數據庫中的 _id 值,這樣可以更輕鬆地追蹤數據的來源和變化。

  3. 自定義ID方案:在某些情況下,你可能有自己的一套ID生成方案,並且需要將其與 _id 關聯起來。

舉個例子,假設你有一個部落格系統,其中包含文章(articles)和評論(comments)兩個集合。每篇文章和每條評論都有一個唯一的ID,並且評論需要關聯到對應的文章上。在這種情況下,你可能會考慮手動設置文章和評論的 _id 值,以確保它們能夠正確關聯。

總的來說,大部分情況下,讓 MongoDB 自動生成 _id 是一個簡單而有效的做法。只有在特定的情況下,如需要關聯數據或者進行數據遷移時,才需要考慮手動設置 _id 的值。

我要發表回答

立即登入回答