Как проверить в 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();