2016-09-30 74 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}) 

您当然可以扩展您的查询。只要确保你保持附加条件。