2017-01-18 12 views
0

Мне было интересно, используя update из mongodb с опциями {upsert:true}, можно ли получить и upsertedCount AND modifiedCount be 0?Может быть измененCount и upsertedCount оба будут 0?

Я понимаю, что upsertedCount относится к созданным документам, а modifiedCount относится к обновленным документам.

Так с помощью upsert я не могу найти сценарий, в котором оба эти будут равны 0.

я не прав?

Заранее благодарим за помощь.

+0

У вас может быть ситуация, когда вы «У меня есть что-то, что можно было бы оптимизировать так:« upsertedCount = 0 », и обновление, которое вы сделали с существующим документом, изменило значение поля на то же значение, что и до« измененногоCount = 0 ». Таким образом, в этой ситуации вы будете иметь 'matchchedCount! = 0' – Veeram

+0

@Veeram Saying« у вас нет ничего, чтобы вздохнуть », то есть документ уже существует? Кроме того, вы утверждаете, что 'update' mongo фактически обновляет только соответствующие значения? Я полагал, что манго просто переопределяет документ новым. И скажите, что вы правы, если он только обновляет соответствующие значения, он не будет обновлять поле с одинаковым значением, верно? –

+0

* «У вас нет ничего, чтобы вздохнуть», вы имеете в виду, что документ уже существует? * Да. * Плюс вы утверждаете, что обновление mongo действительно обновляет только соответствующие значения? Я полагал, что манго просто переопределяет документ новым. * Mongo имеет как выборочное обновление, так и замену. * И скажите, что вы правы, если он только обновляет соответствующие значения, он не будет обновлять поле с тем же значением, я прав? * Да и измененный счет будет 0. – Veeram

ответ

0

Я думаю, что вы правы в своем предположении. Упрощение в основном означает создание нового документа, если документ не найден. Таким образом, если вы установите значение true при выполнении обновления, либо документ присутствует, либо будет изменен (настройка modifiedCount на 1), либо документ отсутствует (настройка upsertCount на 1)

+0

Итак, вы утверждаете, что нет сценария в котором оба они будут 0 –