回答
不是。这是一个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