web-dev-qa-db-fra.com

Comment vérifier dans PyMongo si la collection existe et si elle existe vide (supprimer tout de la collection)?

Comment vérifier dans PyMongo si la collection existe et si elle existe vide (supprimer tout de la collection)? J'ai essayé comme

collection.remove()

ou

collection.remove({})

mais il ne supprime pas la collection. Comment faire ça ?

28
Damir

Exemple de code dans Pymongo avec commentaire comme explication:

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
52
EwyynTomato

Vous devez utiliser .drop() au lieu de .remove(), voir la documentation pour plus de détails: http://api.mongodb.org/python/current/api/pymongo/collection.html # pymongo.collection.Collection.drop

=====

Désolé d'avoir mal compris votre question.

Pour vérifier si une collection existe, utilisez la méthode collection_names sur la base de données:

>>> collection_name in database.collection_names()

Pour vérifier si une collection est vide, utilisez:

>>> collection.count() == 0

les deux renverront True ou False en résultat.

18
Reorx

Avez-vous essayé ceci:

db.collection.remove();

5
geakie