MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Pobierz dźwięk - plik binarny - przechowywany w moim Mlab

Nie potrzebujesz GridFS dla plików mniejszych niż 16 MB. Możesz przechowywać dane binarne bezpośrednio w MongoDB przy użyciu typu binarnego BSON lub zakoduj swoje dane binarne i przechowuj je jako ciąg. Base64 jest powszechnym wyborem kodowania podczas przechowywania danych binarnych jako ciągów.

Po pobraniu danych z bazy danych możesz zapisać je do pliku za pomocą fs.writeFile .

Jeśli zapisałeś swoje dane jako typ binarny, możesz przekazać bufor do fs.writeFile . Jeśli zapisałeś swoje dane jako zakodowany ciąg, możesz przekazać ciąg i encoding opcja.

(Jeśli chcesz udostępnić plik za pomocą Express, możesz ustawić typ treści i wysłać dane za pomocą res.send )

Oto mały przykład w NodeJS. Odczytuje plik audio z dysku, zapisuje go w bazie danych MongoDB jako typ binarny (przy użyciu Binarny klasy), pobiera go z powrotem z bazy danych i zapisuje w nowym pliku na dysku.

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()

Chociaż ludzie przechowują dane binarne w bazie danych, prawdopodobnie najczęściej przechowują pliki w systemie plików lub w obiektowej pamięci masowej (takiej jak Amazon S3). Wtedy po prostu zapisaliby link do tego pliku w bazie danych i odzyskali ten plik za pomocą linku. Możesz zrobić to, z czym czujesz się bardziej komfortowo.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb $graphWyszukaj hierarchię kompilacji

  2. Map-redukcja wydajności w MongoDb 2.2, 2.4 i 2.6

  3. Grupuj Mongodb i wypychaj z pustymi tablicami

  4. PyMongo -- iteracja kursora

  5. przechowywać obrazy w mongodb za pomocą mangusty? jak?