mongodb c # различное поведение между Upsert и Insert с установленным по умолчанию ObjectId - PullRequest
0 голосов
/ 10 октября 2018

Я обнаружил, что поведение между 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 и Вставка ?

...