文件参考有多大?

时间:2014-09-21 05:09:31

标签: mongodb

......如果我需要问的话,我做错了吗?

我有一个由数千个项目(视频中的跟踪对象)组成的数据集,每个项目由1到大约100,000个其他子项(每个帧的数据)组成。我想弄清楚是否明智地引用目标文档中的每一个框架,大致如下:

{
    "_id" : ObjectId("541e59c033e2931c587ad85a"),
    "frames" : [ 
        ObjectId("541e599b33e2931c587ad7f6"), 
        ObjectId("541e599b33e2931c587ad7f7"), 
        ObjectId("541e599b33e2931c587ad7f8")
    ],
    "track_id" : 124
}

我的框架将在另一个集合中,看起来像:

{
    "_id" : ObjectId("541e599b33e2931c587ad7f6"),
    "track_id" : 124,
    "frame" : 1
    "centroid" : [1234, 2345],
}

因为“跟踪”集合中frames的长度可以扩展到大约100k范围,我有点担心我可能会削减16 MB的文档大小限制。

我的XY problem是,如果我的所有帧数据都是明确地按整数排序,并且在track_idframe_no组合之间是唯一的,那么我是否应该打扰文档参考?< / p>

2 个答案:

答案 0 :(得分:0)

我认为字段框架是多余的,因为来自集合框架的所有文档都可以由某个 track_id 收集。移除此字段是安全的,然后您不再担心BSON尺寸限制。
顺便说一句,这与MongoDB支持的 GridFS 非常相似。

答案 1 :(得分:0)

要回答标题问题:ObjectId为12个字节。

但听起来你不需要frames引用。在{track_id: 1, frame: 1}上的框架集合中添加一个唯一索引,可以让您快速(并且更轻松地)找到任何轨道的任何框架。