我添加了 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时没有写CreatedAtUtc
。
CreatedAtUtc
不在表中。
但是,如果我使用InsertOne
,则一切正常,并且CreatedAtUtc
字段已编写。我可以通过CreatedAtUtc
选项使用UpdateOne
强行写入IsUpsert
字段吗?