Dela via


Hantera en MongoDB-databas med JavaScript

GÄLLER FÖR: MongoDB

MongoDB-servern i Azure Cosmos DB är tillgänglig från vanliga npm-paket för MongoDB, till exempel:

Kommentar

Exempelkodfragmenten är tillgängliga på GitHub som ett JavaScript-projekt.

API för MongoDB-referensdokumentation | MongoDB-paket (npm)

Namnge en databas

I Azure Cosmos DB motsvarar en databas ett namnområde. När du skapar en databas utgör databasnamnet ett segment av den URI som används för att komma åt databasresursen och eventuella underordnade resurser.

Här följer några snabbregler när du namnger en databas:

När den har skapats är URI:n för en databas i det här formatet:

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

Hämta databasinstans

Databasen innehåller samlingarna och deras dokument. Använd en instans av Db klassen för att komma åt databaserna på servern.

Följande kodfragment förutsätter att du redan har skapat klientanslutningen och att du stänger klientanslutningen efter dessa kodfragment.

Hämta serverinformation

Få åtkomst till administratörsklassen för att hämta serverinformation. Du behöver inte ange databasnamnet i db metoden. Informationen som returneras är specifik för MongoDB och representerar inte själva Azure Cosmos DB-plattformen.

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

Föregående kodfragment visar följande exempelkonsolutdata:

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

Finns databasen?

Den interna MongoDB-drivrutinen för JavaScript skapar databasen om den inte finns när du kommer åt den. Om du vill veta om databasen redan finns innan du använder den hämtar du listan över aktuella databaser och filtrerar efter namnet:

// 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).toArray();
if(dbFound) {
  return `Database exists:\t${lookForDatabase}`;
}

Föregående kodfragment visar följande exempelkonsolutdata:

Database exists:        adventureworks

Hämta lista över databaser, samlingar och antal dokument

När du hanterar MongoDB-servern programmatiskt är det bra att veta vilka databaser och samlingar som finns på servern och hur många dokument som finns i varje samling.

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

Föregående kodfragment visar följande exempelkonsolutdata:

Databases:

        adventureworks


                Collections:

                        products: 1 doc(s)

        oldmain


                Collections:

                        central: 0 doc(s)

done

Hämta databasobjektinstans

Anropa följande metod för att hämta en databasobjektinstans. Den här metoden accepterar ett valfritt databasnamn och kan ingå i en kedja.

En databas skapas när den används. Det vanligaste sättet att komma åt en ny databas är att lägga till ett dokument i en samling. I en kodrad med länkade objekt skapas databasen, samlingen och dokumentet.

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

Läs mer om att arbeta med samlingar och dokument.

Ta bort en databas

En databas tas bort från servern med metoden dropDatabase i DB-klassen.

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

Föregående kodfragment visar följande exempelkonsolutdata:

Drop database:  true
done

Se även