2016-09-18 40 views
1

MongoDB docs顯示一個一對多的關係的一個例子...MongoDB文檔,一對多的例子,爲什麼參考文獻不同?

(簡稱...)

模型中的一個對許多與文檔關係參考

// Publisher. 
{ 
    _id: "oreilly", 
    name: "O'Reilly Media", 
} 

// Book. 
{ 
    _id: 123456789, 
    title: "MongoDB: The Definitive Guide", 
    publisher_id: "oreilly" 
} 

// Book. 
{ 
    _id: 234567890, 
    title: "50 Tips and Tricks for MongoDB Developer", 
    publisher_id: "oreilly" 
} 

爲什麼出版商_id是一個合乎邏輯的,人類可讀的名稱,而書_id似乎是生成的surrogate keys?

是不是所有的_id都會生成值?

在MongoDB中有時使用數據本身作爲唯一鍵,有時不是常規嗎?

如果是這樣,我們什麼時候使用普通名稱(「mary」,「joe」,「exxon」),我們什麼時候更喜歡生成的值?

回答

1

會不會生成所有_ids值?

僅當MongoDB不由用戶提供時,纔會自動生成_id。

在MongoDB中有時使用數據本身作爲 唯一鍵,有時不是常規嗎?

是的,數據可以作爲關鍵。 _id值在集合中必須是唯一的,才能正確識別文檔。如果滿足上述條件,則可以將文檔中的任何參數設置爲_id。當_id在集合中不唯一時,會引發重複鍵錯誤。

如果是這樣,我們什麼時候使用普通的名字(「瑪麗」,「喬」,「埃克森美孚」),並 我們什麼時候喜歡生成的值?

當沒有參數(或參數組)時,我們更喜歡生成的_id,它唯一地標識文檔。例如,使用某人的名字將不起作用,因爲可能會出現添加其他人名稱相同的情況。但是,考慮一本書的ISBN號碼,它唯一標識一本書。這些參數可以用作_id。

附加註釋:

  • 自動生成的_id已嵌入的時間戳值(其可以是使用的)。
  • 無需擔心自動生成_id的重複值。
  • 但是,用戶指定的_id值可能更多應用程序/域特定。