2016-09-30 111 views
0

我在不使用GridFS的情況下將文件存儲在常規的MongoDB文檔中(文件全部小於16MB的限制)。防止在終端輸出MongoDB BSON BinData

當採取這種方法時,我遇到的問題是,當我在終端中執行db.collection.find操作時,它會輸出整個二進制數據。對於小文件,這不是問題,但是當文件爲8MB時,需要大約20秒才能在終端中輸出該二進制文件。

有沒有辦法阻止整個二進制數據輸出到終端?

文件大致具有以下結構:

 
{ 
    _id: ObjectId 
    field1: string 
    field2: string 
    field3: string 
    attachment: { 
       filename: string 
       data: BinData 
       } 
} 

如果沒有attachment它會被排除在文件中。

+0

你不想擁有它嗎?你想要什麼而不是整個二進制數據? –

+0

我想知道文檔有一個附件,但不會將所有內容都輸出到控制檯,因爲它只需要20秒就可以輸出。我認爲可能的解決方案是將二進制數據存儲在不同的集合中,並在實際文檔中存儲對其的引用。 – Sjiep

回答

1

您如何確保查詢找到其中的字段附件$exists的文檔,但是在結果中使用projection排除該字段?

db.bindata.find({attachment:{$exists:true}}, {attachment:false}) 

您當然可以擴展您的查詢。只要確保你保持附加條件。