1 回答

TA貢獻1831條經驗 獲得超10個贊
正如評論中已經提到的,將 ObjectId 存儲為十六進制字符串會使它所需的空間加倍,如果您想提取其中一個值,您首先需要從該字符串構造一個 ObjectId。
但是你有一個誤解。有絕對沒有必要使用的ObjectId為強制性_id領域。很多時候,我建議不要這樣做。這是為什么。
舉一個簡單的例子,一本書、關系和其他一些為了簡單而擱置的考慮因素:
{
_id: ObjectId("56b0d36c23da2af0363abe37"),
isbn: "978-3453056657",
title: "Neuromancer",
author: "William Gibson",
language: "German"
}
現在,這里的 ObjectId 有什么用?其實沒有。這將是一個幾乎沒有任何用處的索引,因為您永遠不會通過這樣的人工鍵來搜索您的圖書數據庫。它沒有語義價值。對于已經具有全球唯一 ID(ISBN)的對象來說,這將是一個唯一 ID 。
所以我們像這樣簡化我們的書籍文檔:
{
_id: "978-3453056657",
title: "Neuromancer",
author: "William Gibson",
language: "German"
}
我們減小了文檔的大小,使用了預先存在的全局唯一 ID,并且沒有基本上未使用的索引。
回到您的基本問題,您是否會因為不使用 ObjectId 而丟失某些東西:通常,不使用 ObjectId 是更好的選擇。但是如果你使用它,請使用二進制形式。
- 1 回答
- 0 關注
- 216 瀏覽
添加回答
舉報