MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Ambil audio - file biner- disimpan di Mlab saya

Anda tidak memerlukan GridFS untuk file yang lebih kecil dari 16 MB. Anda dapat menyimpan data biner secara langsung di MongoDB menggunakan tipe biner BSON atau menyandikan data biner Anda dan menyimpannya sebagai string. Base64 adalah pilihan pengkodean umum saat menyimpan data biner sebagai string.

Setelah Anda mengambil data dari database, Anda dapat menulisnya ke file menggunakan fs.writeFile .

Jika Anda menyimpan data sebagai tipe biner, Anda dapat meneruskan buffer ke fs.writeFile . Jika Anda menyimpan data sebagai string yang disandikan, Anda dapat meneruskan string dan encoding pilihan.

(Jika Anda ingin menyajikan file dengan Express, Anda dapat mengatur jenis konten dan mengirim data menggunakan res.send )

Berikut adalah contoh kecil di NodeJS. Ini membaca file audio dari disk, menyimpannya ke database MongoDB sebagai tipe biner (menggunakan driver MongoDB Biner class), mengambilnya kembali dari database, dan menulisnya ke file baru di disk.

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

Meskipun orang menyimpan data biner dalam database, mungkin paling umum bagi orang untuk menyimpan file dalam sistem file atau dalam penyimpanan objek (seperti Amazon S3). Kemudian mereka hanya akan menyimpan tautan ke file itu di database dan mengambil file itu menggunakan tautan itu. Anda dapat melakukan apa pun yang Anda rasa lebih nyaman.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Gunakan $stdDevSamp atau $stdDevPop dengan Spring Mongo

  2. Kesalahan koneksi MongoDB di tetesan Digital Ocean

  3. pymongo auth gagal dalam skrip python

  4. Gunakan agregasi MongoDB untuk menemukan persimpangan set dari dua set dalam dokumen yang sama

  5. Metode PyMongo dan toArray()