C# 如何为存储为数组[ticks,offset]的DatetimeOffset创建MongoDB TTL索引?
我试图在包含DateTimeOffset文档的集合上创建MongoDB TTL indexe。但该日期将作为一个刻度数组和偏移量(例如[ticks,offset])进行持久化。 例如:C# 如何为存储为数组[ticks,offset]的DatetimeOffset创建MongoDB TTL索引?,c#,mongodb,mongodb-.net-driver,C#,Mongodb,Mongodb .net Driver,我试图在包含DateTimeOffset文档的集合上创建MongoDB TTL indexe。但该日期将作为一个刻度数组和偏移量(例如[ticks,offset])进行持久化。 例如: TimeStamp:Array [ 0:636803424000000000, 1:-360] 我的模型如下所示: public class Log { .... DateTimeOffset? TimeStamp{get; set;} } 我使用的是MongoDb.Driv
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);
....
。。。。
var indexKeysDefinition=Builders.IndexKeys.Descending(l=>l.TimeStamp);
var indexOptions=新创建的indexOptions
{
ExpireAfter=TimeSpan..FromTicks(TimeSpan.TicksPerMinute),
Name=“LogsTimeStamPIndex”,
背景=真
};
var模型=新的CreateIndexModel(IndexKeyDefinition,indexOptions);
wait_database.GetCollection(“Log”).index.CreateOneAsync(model);
....
这将创建索引,但文档不会在1分钟后过期。如何为以这种方式存储的DateTimeOffset创建TTL?或者我在这里遗漏了什么?我想这会对将来的人有所帮助。
我的团队实际上联系了MognoDb的工程师,他们已经通知我们日期必须是ISO日期才能用于TTL索引。显然,[tick,offset]的格式不正确。再次感谢Adam Harrison早些时候指出这一点。我对C不太熟悉,但看起来文档是用时间戳值存储的。TTL索引只会使索引字段为日期或包含日期数组的文档过期。请参见链接“谢谢”。我已经看过了,但令人费解的是,为什么MongoDb以[ticks,offset]格式存储DateTimeOffset,却无法直接在其上创建TTL索引。