pymongo db.collection_names() return 空列表

pymongo db.collection_names() return empty list

我正在使用以下代码连接到数据库并为每个数据库列出所有集合:

conMongo =MongoClient(connect,27017)
listOfDBs = conMongo.database_names()

for i in listOfDBs:
    db = conMongo[i]
    print db
    print db.collection_names(): 

 conMongo.disconnect()

数据库连接没有问题,可以打印数据库列表。

但是 db.collection_names() 打印空列表,尽管每个数据库中有很多集合。

我通过更新 pymongo 包解决了我的问题:

easy_install --upgrade pymongo

这是一个至少可以追溯到 2014 年的旧错误(PYTHON-790,SERVER-16224)。

使用pymongo2.8之前版本的系统(例如Ubuntu14,卡在pymongo2.6.3)来查询2.8或更高版本MongoDB 服务器将看到它的 collection_names() 方法总是 return 一个空列表。

没有简单的解决方法,您将只能使用以下命令测试集合是否存在:

database['collection'].count() > 0

仔细检查数据库名称

MongoDB是区分大小写的数据库,所以代码中的数据库名称和服务器要完全一致。 对我来说,我的数据库名称是 db_name 并且我在我的代码中查找 db-name 所以它不起作用

希望对您有所帮助:)