Mongo部分AND TTL索引

yur*_*s87 5 indexing mongodb mongodb-query

是否可以基于 和 创建复杂partialFilterExpression索引expireAfterSeconds?我想要进行基于 TTL 的清理,但我也想仅对某些记录执行此操作。我尝试使用命令创建这样的索引:

db.expirational.createIndex(
   { created_on : 1 },
   {  expireAfterSeconds : 20, partialFilterExpression: { rating: 2 } }
)
Run Code Online (Sandbox Code Playgroud)

我的记录是这样的:db.expirational.insert({ 'name': 'record4', 'rating' : 1, 'created_on' : new Date() })

TTL 部分工作并清理集合,但它不关心partialFilterExpression: { rating: 2 }.

是预期的吗?我的命令不正确吗?如果没有,我们应该创建一个功能请求吗?我发现这样的用例非常有用。

yur*_*s87 3

我会根据@Stennie的评论来回答。我真的忘记了我在那台机器上的 mongo 实例已经很旧了。结果是3.0.6。部分索引是在3.2中才引入的。

我真的很欣赏 mongo 的灵活性和宽容性,但有时,如果它至少在传递未识别的选项时发出警告,那就太好了。

无论如何,我的场景在 3.4.5 上运行得非常顺利。