讓我們看看一個簡單的「壞」例子:假設我有兩個集合'person'和'address'。並且讓我們在'地址'中假設我想存儲地址關聯的人的'_id'。將「引用鍵」項存儲爲「地址」集合中的ObjectId vs字符串是否有任何好處?將文檔的id保存爲另一個文檔ObjectId或String
我覺得像把它們存儲爲字符串不應該傷害,但我沒有在mongo工作很長時間,也不知道如果我遵循這種模式會不會傷害到道路。使用人Store _Id as object or string in MongoDB? 而其說的ObjectId是快了,我認爲它的真實,如果你正在讀取/父集合中使用的ObjectId(用於例如更新讀取/更新「人」的收集:
我在這裏閱讀文章。 ._id作爲ObjectId),但我找不到任何暗示如果通過其他集合中的字符串id表示進行搜索(在我們的示例中,通過person._id作爲字符串搜索地址集合中的內容),結果可能爲true
您的反饋非常感謝。
如何,這是一個不同的問題? ObjectId以12字節存儲。 ObjectId的十六進制字符的字符串是24個字節(僅適用於字符,正尾隨後加大小參考)。更多的空間,更多的時間。比較慢!這應該不難解決。 –
你是對的,正試圖用燼數據處理事情,並沒有看到轉換objectid到字符串,並返回到objectId很多點,我尋找方便而不是性能。今天早上我做了一個搜索,這個問題也被問到了其他的形式。 –
爲了記錄您在這裏接受的答案,提出了另一個重要的觀點。無法手動將其重新轉換爲字符串或ObjectId值,您無法在不同的「類型」上將事物匹配在一起。我個人更喜歡所有的外部API使用擴展的JSON格式'{「_id」:{「$ oid」:「56ea9e8bb1e015d13b376db5」}}'因爲如果我的客戶端實際上可以反序列化回'ObjectId',那麼我讓它知道數據實際上是什麼。 –