如何从pymongo运行原始mongodb命令

时间:2014-12-04 15:27:04

标签: python mongodb pymongo

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向<{1}}发送原始mongo命令?

2 个答案:

答案 0 :(得分:12)

from pymongo import MongoClient

client = MongoClient()

db = client.test_database

print(db.command("collstats", "test_collection"))

答案 1 :(得分:2)

方法1使用PyMongo

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级连接,   数据库和集合对象。