【发布时间】:2018-12-19 16:55:43
【问题描述】:
我正在尝试在包含具有 DateTimeOffset 的文档的集合上创建 MongoDB TTL 索引。但是日期被保存为一个刻度数组和偏移量,例如[刻度,偏移量]。 例如:
TimeStamp:Array [
0:636803424000000000,
1:-360]
我的模型如下所示:
public class Log
{
....
DateTimeOffset? TimeStamp{get; set;}
}
我正在使用 MongoDb.Driver v2.7.2,我一直在尝试以这种方式创建索引
....
var indexKeysDefinition = Builders<Log>.IndexKeys.Descending(l => l.TimeStamp);
var indexOptions = new CreateIndexOptions
{
ExpireAfter = TimeSpan..FromTicks(TimeSpan.TicksPerMinute),
Name = "LogsTimeStamPIndex",
Background = true
};
var model = new CreateIndexModel<Log>(indexKeysDefinition, indexOptions);
await _database.GetCollection<Log>("Log").Indexes.CreateOneAsync(model);
....
这是在创建索引,但文档在 1 分钟后没有过期。如何为以这种方式存储的 DateTimeOffset 创建 TTL?或者我在这里错过了什么?
【问题讨论】:
-
我对 C# 不是很熟悉,但看起来文档是使用时间戳值存储的。 TTL 索引只会使索引字段为日期或包含日期数组的文档过期。见stackoverflow.com/questions/53766763/…
-
感谢您的链接。我已经看过了,但令人费解的是为什么 MongoDb 以 [ticks, offset] 格式存储 DateTimeOffset 并且无法直接在它们上创建 TTL 索引。
标签: c# mongodb mongodb-.net-driver