python - 如何使用 pymongo 编写连接到 mongodb 的函数

标签 python mongodb pymongo

我正在尝试编写一个函数来连接到 mongodb 并返回一个集合对象。我有以下内容:

def getCollection(dbname,collection):
    client = MongoClient()
    data_base = client.dbname
    collObject = data_base.collection
    return collObject   

当我运行时:

collection = getCollection(client, "hkpr_restore", "agents")
print collection

我得到:

Collection(Database(MongoClient('localhost', 27017), u'dbname'), u'collection')

我做错了什么?

最佳答案

当使用 client.dbname 时,属性 dbname 被调用,这意味着您正在检索名为 dbname 的数据库。

同样适用于 data_base.collection

解决方法:

def getCollection(dbname, collection):
    client = MongoClient()
    data_base = getattr(client, dbname)
    collObject = getattr(data_base, collection)
    return collObject

替代方案:您可以使用字典式访问:

def getCollection(dbname, collection):
    client = MongoClient()
    data_base = client[dbname]
    collObject = data_base[collection]
    return collObject

关于python - 如何使用 pymongo 编写连接到 mongodb 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29915706/

相关文章:

python - 树字符串到括号字符串

python - 通过 4 个索引同时迭代

python - 使用多个命令运行 for 循环文件,当第一个命令前一个文件完成时运行下一个文件

Python os.listdir 文档字符串显示 "list of files"但也包含目录

mongodb - mongo db使用相同的id从两个表中获取数据

insert - pymongo 在循环内插入

python - 获取以给定大小的列表列表形式返回的 pymongo .find() 结果

mongodb - MongoDB 如何处理嵌套在数组中的对象属性的复合索引?

c# - 等待 MongoConnection 超时

python - mongodb findOne 和 $or 参数的顺序重要还是层次结构? [表现]