Целта на ключа на версията е оптимистично заключване.
Когато е разрешено, стойността на версията се увеличава атомарно при всяко актуализиране на документ.
Това позволява на кода на приложението ви да тества дали са направени промени между извличане (например въвеждане на ключ за версия 42) и последваща актуализация (уверявайки, че стойността на версията все още е 42). Ако ключът на версията има различна стойност (напр. 43, защото е направена актуализация на документа), кодът на вашето приложение може да се справи с едновременната модификация.
Същата концепция често се използва в релационни бази данни вместо песимистично заключване, което може да доведе до ужасна производителност. Всички прилични ORM предоставят такава функция. Например това е добре описано в документацията на ObjectDB . Това е обектна база данни, реализирана в Java, но се прилага същата концепция.
публикацията в блог свързани в коментара на Behlül демонстрират оптимистичната полезност на заключването с конкретен пример, но само за промени в масиви, вижте по-долу.
Напротив, ето един прост случай, когато е безполезен:потребителски профил, който може да се редактира сам от неговия собственик. Тук можете да се отървете от оптимистичното заключване и да приемете, че последната редакция винаги печели.
Така че само вие знаете дали вашето приложение се нуждае от оптимистично заключване или не. Използвайте случай по случай.
Ситуацията с Mongoose е донякъде специална.
Оптимистичното заключване е активирано само за масиви, тъй като форматът за вътрешно съхранение използва позиционен индекс. Това е проблемът, описан в публикацията в блог
свързан в коментара на въпроса. Намерих обяснението
дадени в mongoose-orm
пощенският списък доста ясен:ако имате нужда от оптимистично заключване за други полета, трябва да се справите сами.
Ето същност
показва как да се приложи стратегия за повторен опит за add
операция. Отново, как искате да се справите с това зависи от вашите случаи на употреба, но трябва да е достатъчно, за да започнете.
Надявам се това да изясни нещата.
Наздраве