社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  MongoDB

MongoDB模式/模型中文件的字段类型是什么?

Carlos Herrera • 5 年前 • 1611 次点击  

我正在使用mongo模式发布表单。对所有字符串都很好,但现在我正在尝试上载一个文件。应该在架构中指定文件的字段类型?

//create model/schema
const TrackSchema = new Schema({
    title:{
        type: String, 
        required: true
    },
    length:{
        type: String, 
        required: true
    }, 
    available:{
        type: Boolean, 
        required: true
    },
    image:{
        type: String, 
        required: true
    }, 
    date: {
        type: Date, 
        default: Date.now
    }, 
    source: {
        type: **??, 
        required: true
    }
})

我应该将“source”字段设置为什么类型,它将是来自表单的文件

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47618
 
1611 次点击  
文章 [ 2 ]  |  最新文章 5 年前
Daniel Varela
Reply   •   1 楼
Daniel Varela    6 年前

它实际上取决于您的用例——特别是您正在处理的约束。

我可以想到两种方法:

  1. 存储为 type: Buffer 是的。
  2. 存储为 type: String 在里面 base64 是的。

存储为 Buffer 可能是存储空间/速度的最有效方法。它还提供了将其转换为用例所需的任何类型的灵活性。

存储为 String 当您需要访问文件进行下载时,将使您更容易控制文件内容,因为您不需要从 缓冲器 基数64 是的。

就我个人而言,我喜欢将文件存储为 缓冲器 并在其他必要的领域,如 filename mimetype 会产生如下结果:

source: {
        file: { type: Buffer, required: true },
        filename: { type: String, required: true },
        mimetype: { type: String, required: true }
      }

……但这也适用于我的用例。

还有第三种存储方法 GridFS 在Mongo中,以防您的文件超过16MB的文件大小。您可以在他们的官方文档页面中阅读更多信息: https://docs.mongodb.com/manual/core/gridfs/

Ravi Kumar Gupta
Reply   •   2 楼
Ravi Kumar Gupta    6 年前

通常,您将文件数据存储到数据库(如果您正在存储文件)。

有多种方法可以存储文件数据。

  1. 您的文件大小小于16 MB。您可以将数据直接存储到缓冲区中的集合(二进制数据)。

    source : { data: Buffer, contentType: String }
    
  2. 如果文件大小超过16MB,可以使用 GridFS 是的。

  3. 将文件存储在磁盘上,只需存储MongoDB集合的路径。在这种情况下,类型将只是字符串。