【发布时间】:2019-05-23 18:44:30
【问题描述】:
我可以通过这种方式在 mongo shell 中使用expiredAfterSecconds 创建索引:
db.x.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )
我可以重新执行相同的命令,这对 mongo 来说没问题:
> db.x.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 2,
"numIndexesAfter" : 2,
"note" : "all indexes already exist",
"ok" : 1
}
但是,如果我尝试更改 expiredAfterSecconds 值来重新创建我得到的索引并出错:
> db.x.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 7200 } )
{
"ok" : 0,
"errmsg" : "Index with name: createdAt_1 already exists with different options",
"code" : 85,
"codeName" : "IndexOptionsConflict"
}
如果我使用ensureIndex() 而不是createIndex(),也是一样。
据我所知,我发现修改expireAfterSeconds 值的唯一方法是删除索引,然后重新创建它,但我想知道是否还有其他方法(可能是某种“覆盖”选项要传递给createIndex()?)。
我正在使用 PyMongo,所以如果它可以解决 mongo shell 限制,那对我来说也很好。
【问题讨论】:
标签: mongodb pymongo mongodb-indexes