mongodb c#在Upsert和Insert与默认ObjectId之间的不同行为

时间:2018-10-10 09:18:53

标签: c# mongodb insert upsert

当我使用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 之间是否存在合理的行为差异?

0 个答案:

没有答案