如何为存储为数组[ticks,offset]的DatetimeOffset创建MongoDB TTL索引?

时间:2018-12-19 16:55:44

标签: c# mongodb mongodb-.net-driver

我正在尝试在包含带有DateTimeOffset的文档的集合上创建MongoDB TTL索引。但是日期以滴答和偏移量数组的形式保存,例如[ticks,offset]。 例如:

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?还是我在这里想念什么?

1 个答案:

答案 0 :(得分:1)

我想这会在将来对某人有所帮助。 我的团队实际上已经联系了MognoDb工程师,他们已经通知我们该日期必须是ISO日期才能用于TTL索引。显然[tick,offset]的格式不正确。再次感谢亚当·哈里森(Adam Harrison)早前指出了这一点。