Как проверить в PyMongo, существует ли коллекция и существует ли она пустая (удалить все из коллекции)? - PullRequest
26 голосов
/ 22 марта 2012

Как проверить в PyMongo, существует ли коллекция и существует ли она пустая (удалить все из коллекции)?Я пробовал как

collection.remove()

или

collection.remove({})

, но он не удаляет коллекцию.Как это сделать?

Ответы [ 3 ]

52 голосов
/ 22 марта 2012

Пример кода в Pymongo с комментарием в качестве объяснения:

from pymongo import MongoClient
connection = MongoClient('localhost', 27017) #Connect to mongodb

print(connection.database_names())  #Return a list of db, equal to: > show dbs

db = connection['testdb1']          #equal to: > use testdb1
print(db.collection_names())        #Return a list of collections in 'testdb1'
print("posts" in db.list_collection_names())     #Check if collection "posts" 
                                            #  exists in db (testdb1)

collection = db['posts']
print(collection.count() == 0)    #Check if collection named 'posts' is empty

collection.drop()                 #Delete(drop) collection named 'posts' from db
18 голосов
/ 22 марта 2012

Вы должны использовать .drop() вместо .remove(), подробности см. В документации: http://api.mongodb.org/python/current/api/pymongo/collection.html#pymongo.collection.Collection.drop

=====

Извините за неправильное понимание вашего вопроса.1009 * Чтобы проверить, существует ли коллекция, используйте метод collection_names в базе данных:

>>> collection_name in database.collection_names()

Чтобы проверить, является ли коллекция пустой, используйте:

>>> collection.count() == 0

, оба вернут TrueЛожь в результате.

5 голосов
/ 22 марта 2012

Вы пробовали это:

db.collection.remove();

...