web-dev-qa-db-ja.com

pymongoから生のmongodbコマンドを実行する方法

mongoコマンドラインで実行できます

db.my_collection.stats()

コレクションの統計をPythonから取得する必要があるので、試してみました

from pymongo import MongoClient

client = MongoClient()
db = client.test_database

collection = db.test_collection

collection.stats()

しかし、私は得る

TypeError: 'Collection' object is not callable. 
If you meant to call the 'stats' method on a 'Collection' object it is failing because no such method exists.

これは、pymongoがこのメソッドをサポートしていないためです。生のmongoDBコマンドをmongoからPythonに送信するにはどうすればよいですか?

11
Dr Manhattan
from pymongo import MongoClient

client = MongoClient()

db = client.test_database

print(db.command("collstats", "test_collection"))
15
Chris Nilsson

PyMongo を使用したアプローチ1:

client = pymongo.MongoClient(Host = "127.0.0.1", port = 27017)
db = client.test_database
db.command("dbstats") # prints database stats for "test_db"
db.command("collstats", "test_collection") # prints collection-level stats

これは、Djangoでこのアプローチを使用して実行できます。

    from Django.db import connections

    database_wrapper = connections['my_db_alias']
    eggs_collection = database_wrapper.get_collection('eggs')
    eggs_collection.find_and_modify(...)

から Django-mongodb-engine docs

Django.db.connectionsは、すべてのデータベース接続を保持する辞書のようなオブジェクトです。つまり、MongoDBデータベースの場合、Django_mongodb_engine.base.DatabaseWrapperインスタンスです。

これらのインスタンスを使用して、PyMongoレベルの接続、データベース、およびコレクションオブジェクトを取得できます。

4
wolendranh