MongoDB C#: вставить, иначе обновить весь документC#

Место общения программистов C#
Ответить
Anonymous
 MongoDB C#: вставить, иначе обновить весь документ

Сообщение Anonymous »

Я пытаюсь написать метод для вставки документа в мою коллекцию MongoDB, если он еще не существует, иначе обновлю весь документ (без _id).
Посмотрел этот пример, но ему 13 лет, и часть кода кажется устаревшей (и это тоже не сработало): вставить в таблицу MySQL или обновить, если существует
На основе множества других примеров построили следующее:

Код: Выделить всё

public void CreateOrUpdate(Batch batch)
{
var filter = Builders.Filter.Eq("_id", batch.Id);
var options = new ReplaceOptions { IsUpsert = true };
_batchCollection.ReplaceOne(filter, batch, options);
}
Класс, который я пытаюсь вставить, довольно прост:

Код: Выделить всё

namespace MyApp.MyService.MyModel
{
[Serializable]
public class Batch
{
// Identification info
public string Description { get; set; } = "not provided";

// The unique Batch Id, this will be used everywhere to identify this batch run
[BsonId]
[BsonGuidRepresentation(GuidRepresentation.Standard)]
public Guid Id { get; set; }

[BsonGuidRepresentation(GuidRepresentation.Standard)]
public Guid AccountId { get; set; }
public string BatchName { get; set; } = "";
}
}
Но когда я пытаюсь вставить первый документ, я получаю:

MongoBulkWriteException`1: произошла операция массовой записи в одной или нескольких ошибках. WriteErrors: [{ Категория: «Без категории», Код: 66, Сообщение: «После применения обновления было обнаружено, что (неизменяемое) поле '_id' было изменено на _id: UUID(»bf46d19b-546f-4b96-8f0c- e06883b4d70d")" } ].

Ранее я доказал, что одна вставка работает, поэтому есть подключение и клиент работает.

Подробнее здесь: https://stackoverflow.com/questions/790 ... e-document
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»