第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

MongoDB 中的小圖像(<4MB),我應(yīng)該使用 gridFS 嗎?

MongoDB 中的小圖像(<4MB),我應(yīng)該使用 gridFS 嗎?

森欄 2023-10-14 11:13:59
這里的問題和請求相當(dāng)簡單,但尚未找到明確的答案。我是 multer、Node 和 MongoDB 的新手,這比我預(yù)想的要困難得多。我想在 MongoDB 中存儲(chǔ)小 JPEG,每個(gè)可能不超過 4 MB。據(jù)我所知,BSON 最大可達(dá) < 16 MB,如果更大,則必須由 gridfs 處理。這些圖像只是我收藏中每個(gè) _id 的個(gè)人資料照片。到目前為止,我已經(jīng)能夠僅使用 multer 在本地上傳文件?,F(xiàn)在我正在嘗試弄清楚如何以正確的方式在 MongoDB 中獲取這些圖像。這么小的圖像需要 gridfs 嗎?執(zhí)行此操作的最佳計(jì)劃是什么?我正在想象將文件更新插入數(shù)據(jù)庫,但想知道這是否只會(huì)上傳文件名而不是圖像本身?我將如何改變我的“模式”來適應(yīng)這個(gè)?如果您知道如何更改下面的更新插入(相對于進(jìn)入 gridFS),那將是理想的選擇。這是代碼。數(shù)據(jù)庫更新:const updatePlace = async (place) => {  const database = await connect();  return database.collection('place').findOneAndUpdate(    { _id: new ObjectID(place._id) },    {      $set: {        name: place.name,        category: place.category,        city: place.city,        state: place.state,        country: place.country,        image: { filename: place.image, mime: 'image/jpeg' },      },    },    { upsert: true, returnOriginal: false }  );};存儲(chǔ)和上傳:const multer = require('multer');const storage = multer.diskStorage({  destination: function (req, file, cb) {    cb(null, './public/uploads');  },  filename: function (req, file, cb) {    cb(null, Date.now() + '_' + file.originalname);  },});const upload = multer({ storage: storage });Mongo DB 項(xiàng)目現(xiàn)在是這樣的:{  "_id": {    "$oid": "5fbc37c4fc13ae680b00001e"  },  "name": "Petronas Towers",  "category": "activity",  "city": "Kuala Lumpur",  "state": "Kuala Lumpur",  "country": "Malaysia",  "image": {    "filename": "petronas.jpg",    "mime": "image/jpeg"  }}
查看完整描述

2 回答

?
慕標(biāo)琳琳

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊

GridFS 是一個(gè)不錯(cuò)的選擇。你得到:

  • 驅(qū)動(dòng)程序自動(dòng)創(chuàng)建索引,從而實(shí)現(xiàn)高效檢索

  • 如果您的圖像超過 16 MB,則可以靈活處理

  • 獨(dú)立的元數(shù)據(jù)和內(nèi)容存儲(chǔ)

您也可以使用二進(jìn)制類型并將圖像數(shù)據(jù)直接存儲(chǔ)在字段中。這會(huì)減少開銷,但是:

  • 您應(yīng)該仍然單獨(dú)存儲(chǔ)內(nèi)容的元數(shù)據(jù),或者對該解決方案與內(nèi)容內(nèi)聯(lián)在文檔中的解決方案進(jìn)行基準(zhǔn)測試(因?yàn)楫?dāng)您只需要元數(shù)據(jù)時(shí),跳過內(nèi)容字節(jié)可能會(huì)很慢)

  • 您需要自己處理元數(shù)據(jù)


查看完整回答
反對 回復(fù) 2023-10-14
?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

建議您將較?。ㄐ∮?6MB)的文件作為Buffer類型(即BSON二進(jìn)制類型)的數(shù)據(jù)保存到MongoDB中。BSON 二進(jìn)制類型用于存儲(chǔ)任何類型的二進(jìn)制數(shù)據(jù)。BSON 二進(jìn)制類型對應(yīng)于 RDBMS BLOB 類型,它是 MongoDB 提供的兩種二進(jìn)制對象存儲(chǔ)(另一種是 GridFS)的基礎(chǔ)。GridFS 是 MongoDB 中的一項(xiàng)規(guī)范,它可以通過將給定文件劃分為多個(gè)塊來在 MongoDB 中存儲(chǔ)大型文件(例如視頻、大型音頻文件和圖像),這反過來又使我們能夠僅獲取和加載文件的部分內(nèi)容,如下所示必需的,而不是檢索整個(gè)文件。

如果您需要存儲(chǔ)的所有文件大小都小于 16 MB,建議您不要使用 GridFS。如果是這種情況,并且您仍然想利用 MongoDB,只需將文件直接存儲(chǔ)在普通的 MongoDB 文檔中即可。BSON 文檔的最大大小為 16 MB,因此如果您的所有文件都較小,那么使用 GridFS 會(huì)浪費(fèi)資源。

但出于教育目的,如果您對小于 16MB 的文件使用 GridFS 并沒有什么問題,以上僅適用于生產(chǎn)級別的項(xiàng)目。


查看完整回答
反對 回復(fù) 2023-10-14
  • 2 回答
  • 0 關(guān)注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號