sql >> Databáze >  >> NoSQL >> MongoDB

Načíst zvuk - binární soubor - uložený v mém Mlab

GridFS nepotřebujete pro soubory menší než 16 MB. Binární data můžete ukládat přímo do MongoDB pomocí binárního typu BSON nebo zakódujte svá binární data a uložte je jako řetězec. Base64 je běžná volba kódování při ukládání binárních dat jako řetězce.

Jakmile načtete data z databáze, můžete je zapsat do souboru pomocí fs.writeFile .

Pokud jste data uložili jako binární typ, můžete předat vyrovnávací paměť na fs.writeFile . Pokud jste svá data uložili jako kódovaný řetězec, můžete předat řetězec a encoding volba.

(Pokud jste chtěli soubor poskytnout pomocí Express, můžete nastavit typ obsahu a odeslat data pomocí res.send )

Zde je malý příklad v NodeJS. Toto načte zvukový soubor z disku a uloží jej do databáze MongoDB jako binární typ (pomocí ovladače MongoDB Binární class), načte jej zpět z databáze a zapíše jej do nového souboru na disku.

const mongodb = require('mongodb')
const util = require('util')
const fs = require('fs')
const readFile = util.promisify(fs.readFile)
const writeFile = util.promisify(fs.writeFile)

async function main() {
  const client = await mongodb.MongoClient.connect(process.env.MONGO_URI)
  console.log('connected')

  let db = await client.db('dbname')

  // Reading in binary data from a file. data is a buffer.
  let data = await readFile(__dirname + '/sample.mp3')

  // Insert binary data to the database
  let res = await db.collection('coll').insert({data: new mongodb.Binary(data)})
  console.log(res)
  let objectId = res.ops[0]._id

  // Retrieve binary data from the database
  let obj = await db.collection('coll').findOne({_id: objectId})
  console.log(obj)

  // *** This is the key part ***
  // use obj.data.read to get a buffer from the binary data and write that buffer to a file
  await writeFile(__dirname + '/out.mp3', obj.data.read(0, obj.data.length()))

  console.log('done')
}

main()

Ačkoli lidé ukládají binární data do databáze, je pravděpodobně nejběžnější, že lidé ukládají soubory do souborového systému nebo do objektového úložiště (jako je Amazon S3). Pak by jen uložili odkaz na tento soubor do databáze a načetli tento soubor pomocí odkazu. Můžete dělat, co vám vyhovuje.




  1. Odstraňte dokumenty z kolekce MongoDB na základě času v poli Datum

  2. MongoError:Neznámý modifikátor:$pushAll v node js

  3. Aktualizujte mnoho dokumentů v mongoDB s různými hodnotami

  4. Napište vlastní dotaz do úložiště mongodb