当我使用C#SDK v2.7时,发现插入和Upsert之间的行为有所不同。 像这样:
一个实体,例如:
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 和 Insert 之间是否存在合理的行为差异?