Megosztás a következőn keresztül:


MongoDB-adatbázis kezelése JavaScript használatával

A KÖVETKEZŐKRE VONATKOZIK: MongoDB

Az Azure Cosmos DB-ben található MongoDB-kiszolgáló a MongoDB gyakori npm-csomagjaiból érhető el, például:

Feljegyzés

A példakódrészletek JavaScript-projektként érhetők el a GitHubon.

A MongoDB-hez készült API referenciadokumentációja | MongoDB-csomag (npm)

Adatbázis elnevezése

Az Azure Cosmos DB-ben az adatbázis egy névtérhez hasonló. Adatbázis létrehozásakor az adatbázis neve az adatbázis-erőforrás és a gyermekerőforrások eléréséhez használt URI egy szegmensét képezi.

Az alábbiakban néhány gyors szabályt talál az adatbázisok elnevezésekor:

  • Az adatbázisnevek 3 és 63 karakter közötti hosszúak maradnak
  • Az adatbázisnevek csak kisbetűket, számokat vagy kötőjelet (-) tartalmazhatnak.
  • Az adatbázisneveknek kisbetűvel vagy számmal kell kezdődniük.

A létrehozás után az adatbázis URI-ja a következő formátumban van:

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

Adatbázispéldány lekérése

Az adatbázis tartalmazza a gyűjteményeket és azok dokumentumait. Az osztály egy példányával Db érheti el a kiszolgálón lévő adatbázisokat.

Az alábbi kódrészletek feltételezik, hogy már létrehozta az ügyfélkapcsolatot, és a kódrészletek után bezárja az ügyfélkapcsolatot.

Kiszolgálóadatok lekérése

A kiszolgáló adatainak lekéréséhez lépjen a felügyeleti osztályba. A metódusban nem kell megadnia az db adatbázis nevét. A visszaadott információk a MongoDB-re vonatkoznak, és nem magát az Azure Cosmos DB-platformot képviselik.

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

Az előző kódrészlet a következő példakonzol kimenetét jeleníti meg:

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

Létezik adatbázis?

A JavaScript natív MongoDB-illesztőprogramja létrehozza az adatbázist, ha az nem létezik, amikor ön hozzáfér hozzá. Ha szeretné tudni, hogy az adatbázis már létezik-e a használat előtt, kérje le az aktuális adatbázisok listáját, és szűrjön a névre:

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

Az előző kódrészlet a következő példakonzol kimenetét jeleníti meg:

Database exists:        adventureworks

Adatbázisok, gyűjtemények és dokumentumok számának lekérése

A MongoDB-kiszolgáló programozott kezelésekor hasznos tudni, hogy milyen adatbázisok és gyűjtemények találhatók a kiszolgálón, és hány dokumentum található az egyes gyűjteményekben.

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

Az előző kódrészlet a következő példakonzol kimenetét jeleníti meg:

Databases:

        adventureworks


                Collections:

                        products: 1 doc(s)

        oldmain


                Collections:

                        central: 0 doc(s)

done

Adatbázis-objektumpéldány lekérése

Adatbázis-objektumpéldány lekéréséhez hívja meg a következő metódust. Ez a metódus egy nem kötelező adatbázisnevet fogad el, és egy lánc része lehet.

A hozzáféréskor létrejön egy adatbázis. Az új adatbázisok elérésének leggyakoribb módja, ha dokumentumot ad hozzá egy gyűjteményhez. Egy láncolt objektumokat használó kódsorban létrejön az adatbázis, a gyűjtemény és a dokumentum.

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

További információ a gyűjtemények és dokumentumok használatával kapcsolatban.

Adatbázis elvetése

A rendszer eltávolít egy adatbázist a kiszolgálóról a DB-osztály dropDatabase metódusával.

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

Az előző kódrészlet a következő példakonzol kimenetét jeleníti meg:

Drop database:  true
done

Lásd még