具有TTL的C#MongoDB UpdateOne

时间:2018-11-01 10:49:07

标签: c# mongodb

我添加了 TTL索引https://docs.mongodb.com/manual/core/index-ttl/

collection.Indexes.CreateOne(
     new CreateIndexModel<Person>(
     Builders<Person>.IndexKeys.Ascending("CreatedAtUtc"),
     new CreateIndexOptions { ExpireAfter = new TimeSpan(0, 0, 60) }));

创建人:

    Person ps = new Person()
    {
        UserId = 5545,
        Name = "user",
        CreatedAtUtc = DateTime.UtcNow
    };

创建UpdateOptions:

    UpdateOptions upd = new UpdateOptions()
    {                
        IsUpsert = true
    };

并将一个项目更新到集合中

    var update = Builders<Person>.Update.Set(el => el.Name, ps.Name);
    collection.UpdateOne(el => el.UserId == ps.UserId, update, upd);

我对UpdateOne有疑问,在Upsert时没有写CreatedAtUtcCreatedAtUtc不在表中。 但是,如果我使用InsertOne,则一切正常,并且CreatedAtUtc字段已编写。我可以通过CreatedAtUtc选项使用UpdateOne强行写入IsUpsert字段吗?

0 个答案:

没有答案