Bagikan melalui


Mengelola database MongoDB menggunakan Python

BERLAKU UNTUK: MongoDB

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

  • PyMongo untuk aplikasi Python sinkron dan digunakan dalam artikel ini.
  • Motor untuk aplikasi Python asinkron.

Catatan

Contoh cuplikan kode tersedia di GitHub sebagai proyek Python.

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. Untuk mengakses database, gunakan akses gaya atribut atau akses gaya kamus MongoClient. Untuk informasi selengkapnya, lihat Mendapatkan Database.

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

Mendapatkan informasi server

Akses info server dengan metode server_info kelas MongoClient. Anda tidak perlu menentukan nama database untuk mendapatkan informasi ini. Informasi yang dikembalikan khusus untuk MongoDB dan tidak mewakili platform Azure Cosmos DB itu sendiri.

Anda juga dapat mencantumkan database menggunakan metode MongoClient.list_database_names dan mengeluarkan perintah MongoDB ke database dengan metode MongoClient.db.command .

# Get server information
for k, v in client.server_info().items():
    print("Key: {} , Value: {}".format(k, v))

# Get server status of admin database
print("Server status {}".format(client.admin.command("serverStatus")))

# List databases
databases = client.list_database_names()
print("Databases: {}".format(databases))

Cuplikan kode sebelumnya menampilkan output yang mirip dengan contoh output konsol berikut:

Key: version , Value: 3.6.0
Key: versionArray , Value: [3, 6, 0, 0]
Key: bits , Value: 64
Key: maxBsonObjectSize , Value: 16777216
Key: ok , Value: 1.0
Server status {'ok': 1.0}
Databases: ['adventureworks']

Apakah database ada?

Driver PyMongo untuk Python membuat database jika tidak ada saat Anda mengaksesnya. Namun, kami sarankan Anda menggunakan perintah ekstensi MongoDB untuk mengelola data yang disimpan di API Azure Cosmos DB untuk MongoDB. Untuk membuat database baru jika tidak ada, gunakan ekstensi buat database seperti yang diperlihatkan dalam cuplikan kode berikut.

Untuk melihat apakah database sudah ada sebelum menggunakannya, dapatkan daftar database saat ini dengan metode list_database_names .

# Get list of databases
databases = client.list_database_names()
if not databases:
    print("No databases found")

# Does database exist?
DB_NAME = "adventureworks"
if DB_NAME in databases:
    print("Database exists: {}".format(DB_NAME))
else:
    client[DB_NAME].command(
        {"customAction": "CreateDatabase", "offerThroughput": 400}
    )
    print("Created db '{}' with shared throughput.\n".format(DB_NAME))

Cuplikan kode sebelumnya menampilkan output yang mirip dengan 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. Untuk informasi selengkapnya, lihat:

# Get list of databases
databases = client.list_database_names()

# Loop through databases
for db in databases:
    print("Database: {}".format(db))

    # Get list of collections
    collections = client[db].list_collection_names()

    # Loop through collections
    for col in collections:
        print("\tCollection: {}".format(col))

        # Get document count
        doc_count = client[db][col].count_documents({})
        print("\tDocument count: {}".format(doc_count))

Cuplikan kode sebelumnya menampilkan output yang mirip dengan contoh output konsol berikut:

Database: adventureworks
        Collection: products_new
        Document count: 1
        Collection: products
        Document count: 3
Database: testdb
        Collection: mycoll
        Document count: 1

Mendapatkan instans objek database

Jika database tidak ada, driver PyMongo untuk Python membuatnya saat Anda mengaksesnya. Namun, kami sarankan Anda menggunakan perintah ekstensi MongoDB untuk mengelola data yang disimpan di API Azure Cosmos DB untuk MongoDB. Pola ditunjukkan di atas di bagian Apakah database ada?.

Saat bekerja dengan PyMongo, Anda mengakses database menggunakan akses gaya atribut pada instans MongoClient. Setelah Anda memiliki instans database, Anda dapat menggunakan operasi tingkat database seperti yang ditunjukkan di bawah ini.

collections = client[db].list_collection_names()

Untuk gambaran umum bekerja dengan database menggunakan driver PyMongo, lihat Operasi tingkat database.

Letakkan Database

Database dihapus dari server menggunakan metode drop_database MongoClient.

DB_NAME = input("Enter database name to drop: ")
if DB_NAME in client.list_database_names():
    print("Dropping database: {}".format(DB_NAME))
    client.drop_database(DB_NAME)
else:
    print("Didn't find database: {}".format(DB_NAME))

Cuplikan kode sebelumnya menampilkan output yang mirip dengan contoh output konsol berikut:

Enter database name to drop: adventureworks
Dropping database: adventureworks

Lihat juga