j'utilisais création de la collection automatique pymongo:Comment créer une collection avec index s'il n'existe pas dans pymongo?
client = MongoClient(url)
db = client.get_default_database()
my_collection = db['my_collection']
Je pensais qu'il a créé automatiquement sur la dernière déclaration et a ajouté
index_name = 'my_index'
if index_name not in my_collection.index_information():
my_collection.create_index(..., name=index_name, unique=False)
Malheureusement, cela a conduit à l'erreur
pymongo.errors.OperationFailure: Collection ... doesn't exist
Cette m'a fait réfléchir, cette collection est créée lors de la première sauvegarde. Cela ne me donne aucun endroit pour mettre le code de création d'index. Donc, la question est: comment créer une collection avec index, mais seulement si elle n'existe pas?
J'ai lu cette réponse https://stackoverflow.com/a/9826294/258483 mais ne pas aimer la façon dont il implique d'écrire vérifier l'existence à deux reprises:
client = MongoClient(url)
db = client.get_default_database()
if 'my_collection' not in db.collection_names():
db.createCollection('my_collection')
my_collection = db['my_collection']
index_name = 'my_index'
if index_name not in my_collection.index_information():
my_collection.create_index(..., name=index_name, unique=False)
Cela soulèvera 'OperationFailure' n'est-ce pas? – Dims
Si l'index existe déjà, le serveur MongoDB ignore la commande. –
le cas est que la collection peut être inexistante – Dims