Aracılığıyla paylaş


JavaScript kullanarak MongoDB veritabanını yönetme

ŞUNLAR IÇIN GEÇERLIDIR: MongoDB

Azure Cosmos DB'deki MongoDB sunucunuz MongoDB için yaygın npm paketlerinden kullanılabilir; örneğin:

Not

Örnek kod parçacıkları GitHub'da JavaScript projesi olarak kullanılabilir.

MongoDB için API başvuru belgeleri | MongoDB Paketi (npm)

Veritabanını adlandırma

Azure Cosmos DB'de veritabanı bir ad alanına benzer. Veritabanı oluşturduğunuzda, veritabanı adı veritabanı kaynağına ve alt kaynaklara erişmek için kullanılan URI'nin bir kesimini oluşturur.

Bir veritabanını adlandırırken bazı hızlı kurallar şunlardır:

Oluşturulduktan sonra, bir veritabanının URI'si şu biçimdedir:

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

Veritabanı örneğini alma

Veritabanı koleksiyonları ve belgelerini barındırıyor. Sunucudaki veritabanlarına Db erişmek için sınıfının bir örneğini kullanın.

Aşağıdaki kod parçacıkları, istemci bağlantınızı zaten oluşturduğunuzu ve bu kod parçacıklarından sonra istemci bağlantınızı kapattığınız varsayılır.

Sunucu bilgilerini alma

Sunucu bilgilerini almak için Yönetici sınıfına erişin. yönteminde db veritabanı adını belirtmeniz gerekmez. Döndürülen bilgiler MongoDB'ye özgüdür ve Azure Cosmos DB platformunun kendisini temsil etmez.

// 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`)}`
);

Yukarıdaki kod parçacığı aşağıdaki örnek konsol çıkışını görüntüler:

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

Veritabanı var mı?

JavaScript için yerel MongoDB sürücüsü, veritabanı eriştiğinde yoksa veritabanını oluşturur. Veritabanını kullanmadan önce zaten var olup olmadığını bilmek isterseniz, geçerli veritabanlarının listesini alın ve adı için filtreleyin:

// 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}`;
}

Yukarıdaki kod parçacığı aşağıdaki örnek konsol çıkışını görüntüler:

Database exists:        adventureworks

Veritabanlarının, koleksiyonların ve belge sayısının listesini alma

MongoDB sunucunuzu program aracılığıyla yönetirken, sunucuda hangi veritabanlarının ve koleksiyonların olduğunu ve her koleksiyonda kaç belge olduğunu bilmek yararlı olur.

// 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`);
  }
}

Yukarıdaki kod parçacığı aşağıdaki örnek konsol çıkışını görüntüler:

Databases:

        adventureworks


                Collections:

                        products: 1 doc(s)

        oldmain


                Collections:

                        central: 0 doc(s)

done

Veritabanı nesne örneğini alma

Veritabanı nesnesi örneğini almak için aşağıdaki yöntemi çağırın. Bu yöntem isteğe bağlı bir veritabanı adını kabul eder ve bir zincirin parçası olabilir.

Veritabanına erişildiğinde veritabanı oluşturulur. Yeni veritabanına erişmenin en yaygın yolu, koleksiyona belge eklemektir. Zincirlenmiş nesneler kullanılarak bir kod satırında veritabanı, koleksiyon ve belge oluşturulur.

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

Koleksiyonlar ve belgelerle çalışma hakkında daha fazla bilgi edinin.

Veritabanını bırakma

Veritabanı, DB sınıfındaki dropDatabase yöntemi kullanılarak sunucudan kaldırılır.

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

Yukarıdaki kod parçacığı aşağıdaki örnek konsol çıkışını görüntüler:

Drop database:  true
done

Ayrıca bkz.