1.Делает ли это «уникальным»: true замедление вставки пакетов?
Это индекс, поэтому по определению да, он будет.При вставке необходимо подтвердить уникальность записей и т. Д. Не уверен, что нам нужно тратить слишком много времени на этот вопрос.
2.Чем это отличается от "upsert"?
Вопрос в том, что происходит, когда вы обновляете с опцией upsert: true
.Согласно документам:
Чтобы избежать вставки одного и того же документа более одного раза, используйте upsert: true, если поле запроса уникально проиндексировано.
Если все операции update () завершают часть запроса до того, как какой-либо клиент успешно вставит данные, и в поле имени нет уникального индекса, то каждая операция обновления может привести к вставке.Чтобы MongoDB не вставлял один и тот же документ более одного раза, создайте уникальный индекс в поле имени.
С уникальным индексом, если несколько приложений выдают одно и то же обновление с помощью upsert: true, ровно одно update () успешно вставит новый документ.Остальные операции могут либо:
• обновить вновь вставленный документ, либо
• завершиться неудачно при попытке вставить дубликат.
Если операция не выполнена из-за дублированияошибка индексации, приложения могут повторить операцию, которая завершится успешно как операция обновления.upsert: true с точечным _id запросом
3.Что происходит при попытке пакетной вставки, содержащей несколько дубликатов?Это просто сбой и откат?Или это просто не работает на тех немногих, которые потерпели неудачу из-за уникальной проверки?
Это зависит.Это произойдет, если вы оставите значение по умолчанию для опции ordered
.Но если вы установите значение false :
Если для заказано установлено значение false , документы будут вставлены в неупорядоченном формате иMongod может изменить порядок для увеличения производительности.Приложения не должны зависеть от упорядочения вставок при использовании неупорядоченного insertMany ().
и, что наиболее важно, если ошибка возникает во время массового insertMany
:
с при заказе до false операция вставки будет продолжена для всех оставшихся документов.
Подробнее о неупорядоченных вставках
Подробнее об уникальном индексе с upsert: true