mongodb数组字段可以保存多少个BSON ObjectIds

时间:2016-09-21 16:54:21

标签: mongodb mongoid

我打算在这个数组中为foreignkey id保存大量的id。所以,我只是检查我可以在字段数组中保存的BSON :: ObjectIds的最大数量。让我们说例如

department_ids: [BSON::OBjectId('57cf6d6e8315292136000001'), BSON::OBjectId('57cf6d6e8315292136000002') ...... ]

4 个答案:

答案 0 :(得分:2)

16MB足以容纳大量的ObjectId,ObjectIds并不那么重,它们是12个字节,当你将它除以16MB时,你会超过100万。

但是如果您仍然无法保证,您可以通过Mongo的灵活架构设计获益,并创建一个后续文档来保存更多数组并将该文档的_id存储在相关文档中,其中包含一个名为as的字段“followBy”或其他什么。

缺点是你必须执行后续查询(或者可能不是)。

希望有所帮助。

答案 1 :(得分:0)

您放入数组的对象数量有无限制。但是,包含该阵列的文档不能超过16兆字节

MongoDB Limits and Thresholds

答案 2 :(得分:0)

monogdb的文档中没有提到这样的限制,但是javascript数组最多可以有 2 ^ 32-1 = 4,294,967,295 = 42.9亿个元素

mongodb文档最多可以有16MB。

答案 3 :(得分:0)

每个ObjectID使用12个字节,如果限制为16 MB,则每个文档的数组中可以有大约1398101个objectsID。

也许DBRefs可以帮助您,或者您可以使用GridFS集合。

如果你可以避免连接,这将是mongo的最佳解决方案。