Драйвер MongoDB на C# - копия удостоверения личности на другое поле пластины


Я использую .Net-mongodb c# драйвер для monngodb. При вставке документа я хочу скопировать сгенерированное [BsonId] ObjectId Id поле в другое поле документа (дублируя значение)

Я могу запустить Insert, который создаст ключ, а затем запустить update, чтобы скопировать ключ в другое поле, но это оставит БД в "мягком" состоянии на (короткий) период времени.

Возможно ли это сделать "атомарно" или я использую mongodb неправильно?

1 4

1 ответ:

На самом деле вы не можете этого сделать, если хотите, чтобы обновление было атомарным.

То, что я предлагаю вам сделать, это вместо того, чтобы драйвер установил идентификатор, просто создайте и установите его самостоятельно с помощью ObjectId.GenerateNewId, а затем скопируйте его перед вставкой документа в MongoDB:

entity.Id = ObjectId.GenerateNewId();
entity.IdCopy = entity.Id;