回答
不是。這是一個BSON數據類型。這就像是要求一個32位整數自己縮小一樣。每個對象都必須有_id屬性,但您並不限於ObjectId
。
增加:MongoDB集合中的每個頂級*文檔*都必須有一個_id作爲主鍵。當此屬性未在代碼中設置時,它由驅動程序或數據庫自動分配。 – WiredPrairie 2013-04-07 18:25:34
MongoDB集合中的每個文檔都需要有一個唯一的_id
,但該值不一定是ObjectId
。因此,如果你正在尋找減少您的收藏文件的大小,你有兩個選擇:
選擇文檔的獨特性能之一,並把它作爲
_id
領域。例如,如果您有一個帳戶集合,其中外部提供的帳戶ID是您數據模型的一部分,您可以將該帳戶ID存儲在_id
字段中。自己管理集合的主鍵。許多驅動程序支持自定義primary key factories。正如@assylias所建議的那樣,使用int可以節省空間,但是,如果您可以使用模型中的某個字段作爲
_id
,您將使用更多的空間。
順便說一句,_id
字段的值可以是複合的:您可以使用Object/hash/map/dictionary。例如,參見this SO question。
如果您在Mongo上使用某種類型的對象/模型框架,我會小心使用(1)。有些框架很難與開發人員重寫id代。例如,我在Ruby中對Mongoid有不好的體驗。在這種情況下,(2)可能是更安全的方式,因爲發生在驅動程序層。
- 1. 更改大小?
- 2. 更改字體大小而不更改框的大小
- 3. UIWebView大小更改?
- 4. Image.fromarray更改大小
- 5. Winform大小更改
- 6. 更改SVG大小?
- 7. 更改大小leftviewcontroller
- 8. 更改堆大小
- 9. UIPageViewController更改大小?
- 10. 更改UIImageView的大小
- 11. 更改NSTextView的大小
- 12. 更改MySQL的varchar大小
- 13. ggplot - 更改點的大小
- 14. 更改wx.ProgressDialog的大小
- 15. 更改JTextPane的大小
- 16. 更改Android-Seekbar的大小?
- 17. matplotlib更改sublot的大小
- 18. 更改ImageIcon的大小
- 19. 更改對象的大小
- 20. 更改UISlider的大小thumbImage
- 21. 更改UIStepper的大小?
- 22. 更改大小的按鈕
- 23. 更改Html.TextBox的大小
- 24. 更改UINavigation欄的大小
- 25. 更改writeablebitmap的大小
- 26. 更改矩形的大小?
- 27. 更改UIPickerView的列大小
- 28. 更改coding4fun的大小RoundButton
- 29. UIImageView的大小更改
- 30. 更新NSCollectionViewItem的大小,當它的父NSCollectionView更改大小
也許我不明白你的問題,但減少它如何?它被設計成一種簡單而有效的方式來獲得在多機器設置中定義的唯一標識符:一個4字節的值,表示自Unix紀元以來的秒數,一個3字節的機器標識符,一個2字節的進程ID,以及一個3字節的計數器,從一個隨機值開始。 – WiredPrairie 2013-04-07 18:22:13
這是不可能的,但你可以使用一個整數作爲_id而不是ObjectId來只使用4個字節。 – assylias 2013-04-07 19:07:53
你使用什麼語言,驅動程序和映射框架(如果有的話)? – Sim 2013-04-08 02:23:25