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

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

collection.remove()

или

collection.remove({})

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

Ответы

Ответ 1

Пример кода в 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

Ответ 2

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

=====

Извините за неправильное понимание вашего вопроса.

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

>>> collection_name in database.list_collection_names()

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

>>> collection.count() == 0

оба вернут True или False в результате.

Ответ 3

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

db.collection.remove();