Миграция с MySQL на MongoDB - поле автоматического приращения - PullRequest
3 голосов
/ 12 декабря 2011

Есть ли способ гарантировать уникальное (целочисленное авто) поле для MongoDB?Я знаю, что вы можете сделать:

{ $inc : { field : value } }

Но что, если два запроса будут выполнены одновременно?MySQL вставил бы одно, тогда другое и оба целых числа были бы уникальными, но я не знаю, действительно ли Монго это делает или нет.

Просто чтобы уточнить, я знаю, что это не идеальный способ сделатьэто, но это временная реализация, пока данные не закончили миграцию (инициированную пользователем) из MySQL.

1 Ответ

3 голосов
/ 12 декабря 2011

$inc - это атомарный модификатор , так что да, это будет работать. Убедитесь, что вы используете findAndModify, поэтому поиск и изменение - это одна операция.

Проблема в том, что $inc увеличивает значение данного документа (строки), что означает, что вам нужно использовать коллекцию счетчиков и применить операцию к этому счетчику, а затем вставить фактический документ. Я думаю, вы это знаете, но чувствовали, что стоит указать на это, чтобы избежать путаницы для читателей, которые не читали документы по автоматически увеличивающимся полям .

...