Драйвер MongoDB на C# - копия удостоверения личности на другое поле пластины
Я использую .Net-mongodb c# драйвер для monngodb. При вставке документа я хочу скопировать сгенерированное [BsonId] ObjectId Id
поле в другое поле документа (дублируя значение)
Я могу запустить Insert, который создаст ключ, а затем запустить update, чтобы скопировать ключ в другое поле, но это оставит БД в "мягком" состоянии на (короткий) период времени.
Возможно ли это сделать "атомарно" или я использую mongodb неправильно?
1 ответ:
На самом деле вы не можете этого сделать, если хотите, чтобы обновление было атомарным.
То, что я предлагаю вам сделать, это вместо того, чтобы драйвер установил идентификатор, просто создайте и установите его самостоятельно с помощью
ObjectId.GenerateNewId
, а затем скопируйте его перед вставкой документа в MongoDB:entity.Id = ObjectId.GenerateNewId(); entity.IdCopy = entity.Id;