Я использую pymongo и хочу обновить индекс от того, чтобы быть уникальным и уникальным. Оба ensure_index
и create_index
, похоже, не хотят обновлять уже существующий индекс. Я управляюсь mongo 2.2.0Обновление существующего индекса в pymongo
In [1]: coll.index_information()
Out[1]:
{u'_id_': {u'key': [(u'_id', 1)], u'v': 1},
u'foo_1': {u'key': [(u'foo', 1)], u'unique': True, u'v': 1}}
In [2]: coll.ensure_index([('foo', 1)], unique=True, sparse=True)
In [3]: coll.index_information()
Out[3]:
{u'_id_': {u'key': [(u'_id', 1)], u'v': 1},
u'foo_1': {u'key': [(u'foo', 1)], u'unique': True, u'v': 1}}
In [4]: coll.drop_index('foo_1')
In [5]: coll.ensure_index([('foo', 1)], unique=True, sparse=True)
Out[5]: u'foo_1'
In [6]: coll.index_information()
Out[6]:
{u'_id_': {u'key': [(u'_id', 1)], u'v': 1},
u'foo_1': {u'key': [(u'foo', 1)], u'sparse': True, u'unique': True, u'v': 1}}
Любые идеи? Я не могу точно сделать то, что я сделал здесь, в производственной базе данных, и просто отбросить индекс и заново создать его.
Если альтернатив нет, и вы используете реплика или осколок в процессе производства, вы можете рассмотреть возможность создания с помощью: http://docs.mongodb.org/manual/tutorial/build-indexes-on-replica-sets/ #procedure Итак, вы можете отбросить индекс на вторичном и построить то же самое с разреженным истинным. Это должно работать нормально. –