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:
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.
- MongoClient.Db.Admin.listDatabases
- MongoClient.Db.listCollections
- MongoClient.Db.Collection
- MongoClient.Db.Collection.countDocuments
// 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