Я обнаружил, что поведение между Insert и Upsert отличается, когда я использую C # SDK v2.7.Примерно так:
Объект, такой как:
public class Person
{
public ObjectID _id { get; set; }
public string Name { get; set; }
}
Когда я использую метод вставки:
var collection = db.GetCollection<Person>(collectionName);
Person entity = new Person();
entity.Name = "Peter";
collection.InsertOne(entity);
, он правильно сохраняется в БД с сгенерированным ObjectId следующим образом:
{
"_id":"5bb67b8b8d3632037461b621",
"Name":"Peter"
}
Но когда я использую Upsert, такой как:
......
collection.ReplaceOne(item => false, entity, new UpdateOptions() { IsUpsert = true });
, он сохраняется с ObjectId по умолчанию (все ноль), например:
{
"_id":"000000000000000000000000",
"Name":"Peter"
}
Это разумноразница в поведении между Upsert и Вставка ?