2014-09-21 64 views
0

...如果我需要問,我做錯了嗎?文檔引用有多大?

我有幾千項(跟蹤在視頻對象)構成的數據集,其中每個是由任何地方和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組合之間獨特的排序,我應該甚至與文檔引用煩惱呢?

回答

0

我覺得領域是多餘的,因爲從收集所有文件可以通過一定的track_id收集。刪除此字段是安全的,那麼您不必擔心BSON尺寸限制。
順便說一下,這與MongoDB支持的GridFS非常相似。

0

爲了回答您的問題標題:一個ObjectId是12個字節。

但它聽起來像你不需要frames引用。在{track_id: 1, frame: 1}的框架集合中添加一個唯一的索引,這可以讓您快速(更輕鬆地)找到任何軌道的任何框架。

+0

我看到12字節的東西有一些更多的搜索,但是它有沒有任何開銷在數組中? – 2014-09-21 17:52:16

+0

@NickT不應該,不。 – JohnnyHK 2014-09-22 00:56:37