私はpymongoで自動収集の作成を使用していました:pymongoにインデックスがない場合、コレクションを作成するにはどうすればいいですか?
client = MongoClient(url)
db = client.get_default_database()
my_collection = db['my_collection']
私はそれは残念ながら、これは
pymongo.errors.OperationFailure: Collection ... doesn't exist
これをエラーの原因となった最後のステートメントに自動的に作成され、
index_name = 'my_index'
if index_name not in my_collection.index_information():
my_collection.create_index(..., name=index_name, unique=False)
を追加考えていました最初の保存時にコレクションが作成されると私は思っていました。これにより、インデックス作成コードを置く場所がありません。
したがって、問題は、インデックス付きのコレクションを作成する方法ですが、存在しない場合のみですか?
私はこの答えhttps://stackoverflow.com/a/9826294/258483を読みましたが、それは二度の存在のチェックを書くことを意味どのように好きではない:
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)
これは 'OperationFailure'を発生させますか? – Dims
インデックスがすでに存在する場合、MongoDBサーバーはコマンドを無視します。 –
このコレクションは存在しない場合があります – Dims