Bagikan melalui


Mengelola database MongoDB menggunakan JavaScript

BERLAKU UNTUK: MongoDB

Server MongoDB Anda di Azure Cosmos DB tersedia dari paket npm umum untuk MongoDB seperti:

Catatan

Contoh cuplikan kode tersedia di GitHub sebagai proyek JavaScript.

API untuk dokumentasi | referensi MongoDB Paket MongoDB (npm)

Memberi nama database

Di Azure Cosmos DB, database dianalogikan dengan namespace layanan. Saat Anda membuat database, nama database membentuk segmen URI yang digunakan untuk mengakses sumber daya database dan sumber daya turunan apa pun.

Berikut beberapa aturan cepat saat memberi nama database:

Setelah dibuat, URI untuk database berada dalam format ini:

https://<cosmos-account-name>.documents.azure.com/dbs/<database-name>

Dapatkan instans database

Database menyimpan koleksi dan dokumennya. Gunakan instans Db kelas untuk mengakses database di server.

Cuplikan kode berikut mengasumsikan Anda telah membuat koneksi klien dan menutup koneksi klien Anda setelah cuplikan kode ini.

Mendapatkan informasi server

Akses kelas Admin untuk mengambil informasi server. Anda tidak perlu menentukan nama database dalam metode db. Informasi yang dikembalikan khusus untuk MongoDB dan tidak mewakili platform Azure Cosmos DB itu sendiri.

// Get server build info
const serverInfo = await client.db().admin().serverInfo();
console.log(
  `Server info:\n${Object.keys(serverInfo).map(key => `\t${key}: ${serverInfo[key]}\n`)}`
);

// Get server status
// Not supported in vCore
// const serverStatus = await client.db().admin().serverStatus();
// console.log(
//   `Server status:\n${Object.keys(serverStatus).map(key => `\t${key}: ${serverStatus[key]}\n`)}`
// );

// List all databases
const dbListResult = await client.db().admin().listDatabases();
console.log(
  `Databases:\n${dbListResult.databases.map(db => `\t${db.name}\n`)}`
);

Cuplikan kode sebelumnya menampilkan contoh output konsol berikut:

Server info:
        version: 4.0.0
,       versionArray: 4,0,0,0
,       bits: 64
,       maxBsonObjectSize: 16777216
,       ok: 1

Server status:
        ok: 1

Databases:
        adventureworks
,       oldmain

done

Apakah database ada?

Driver MongoDB asli untuk JavaScript membuat database jika database tersebut belum tersedia saat Anda mengaksesnya. Jika Anda lebih suka mengetahui keberadaan database sebelum menggunakannya, dapatkan daftar database saat ini dan filter namanya:

// Get list of databases
const listResult = await client.db().admin().listDatabases();
if (listResult.databases.length === 0) {
  return 'No databases found';
}

// does database exist
const lookForDatabase = 'adventureworks';
const dbFound = listResult.databases.find(db => db.name === lookForDatabase);
if (dbFound) {
  return `Database exists:\t${lookForDatabase}`;
}

Cuplikan kode sebelumnya menampilkan contoh output konsol berikut:

Database exists:        adventureworks

Mendapatkan daftar database, koleksi, dan jumlah dokumen

Saat Anda mengelola server MongoDB secara terprogram, hal tersebut sangat membantu untuk mengetahui database apa dan koleksi apa yang ada di server dan berapa banyak dokumen di setiap koleksi.

// get list of databases
const listResult = await client.db().admin().listDatabases();
console.log('Databases:\n');

// loop through databases
for await (let database of listResult.databases) {
  console.log(`\t${database.name}\n`);

  // get database client
  const dbClient = client.db(database.name);

  // get collections in database
  const collections = await dbClient.listCollections();
  console.log('\n\t\tCollections:\n');

  // loop through collections
  for await (let collection of collections) {
    // get collection client
    const collectionClient = dbClient.collection(collection.name);

    // get doc count of collection
    const docCount = await collectionClient.countDocuments({});
    console.log(`\t\t\t${collection.name}: ${docCount} doc(s)\n`);
  }
}

Cuplikan kode sebelumnya menampilkan contoh output konsol berikut:

Databases:

        adventureworks


                Collections:

                        products: 1 doc(s)

        oldmain


                Collections:

                        central: 0 doc(s)

done

Mendapatkan instans objek database

Untuk mendapatkan instans objek database, gunakan metode berikut. Metode ini menerima nama database opsional dan dapat menjadi bagian dari rantai.

Database dibuat saat diakses. Cara paling umum untuk mengakses database baru adalah dengan menambahkan dokumen ke koleksi. Dalam satu baris kode yang menggunakan objek berantai, database, koleksi, dan dokumen dibuat.

const insertOneResult = await client.db("adventureworks").collection("products").insertOne(doc);

Pelajari selengkapnya tentang bekerja dengan koleksi dan dokumen.

Letakkan Database

Database dihapus dari server menggunakan metode dropDatabase pada kelas DB.

// Drop a database, removing it permanently from the server.
const dropDatabase = await client.db('adventureworks').dropDatabase();
console.log(`Drop database:\t${JSON.stringify(dropDatabase)}`);

Cuplikan kode sebelumnya menampilkan contoh output konsol berikut:

Drop database:  true
done

Lihat juga