我有一个包含现有数据的集合。我使用 expireAfterSeconds 参数向该集合添加了一个新索引:
2015-11-11T09:09:21.565+0100 I INDEX [conn120] build index on: cmon.cmon.interfaces_history properties: { v: 1, key: { expireAt: 1 }, name: "expireAt_1", ns: "cmon.cmon.interfaces_history", expireAfterSeconds: 1 }
2015-11-11T09:09:21.565+0100 I INDEX [conn120] building index using bulk method
2015-11-11T09:09:21.730+0100 I INDEX [conn120] build index done. scanned 8933 total records. 0 secs
2015-11-11T09:09:21.733+0100 I COMMAND [conn120] command cmon.$cmd command: createIndexes { createIndexes: "cmon.interfaces_history", indexes: [ { expireAfterSeconds: 1, name: "expireAt_1", key: { expireAt: 1 } } ] } keyUpdates:0 writeConflicts:0 numYields:0 reslen:113 locks:{ Global: { acquireCount: { r: 1, w: 1 } }, MMAPV1Journal: { acquireCount: { w: 17870 }, acquireWaitCount: { w: 1 }, timeAcquiringMicros: { w: 886 } }, Database: { acquireCount: { W: 1 } }, Collection: { acquireCount: { W: 1 } }, Metadata: { acquireCount: { W: 2 } } } 169ms
Run Code Online (Sandbox Code Playgroud)
然后我添加了一个新条目,其expireAt值设置如下:
{
"_id" : ObjectId("56446521637140e419b881c7"),
"DeviceName" : "mx1",
"updateTime" : ISODate("2015-11-05T11:17:10.000Z"),
"expireAt" : ISODate("2015-11-12T11:10:13.257Z"),
"DomainName" : "domain.net",
"ifAdminStatus" : "up",
"ifName" : "3002",
"ifOperStatus" : "up"
}
Run Code Online (Sandbox Code Playgroud)
该集合中的现有条目看起来完全相同,但没有设置expireAt。MongoDB 不会从数据库中删除此条目。当我在空集合和测试数据库上测试它时,它起作用了。
> db.serverStatus().metrics.ttl
{ "deletedDocuments" : NumberLong(0), "passes" : NumberLong(823) }
Run Code Online (Sandbox Code Playgroud)
所以我怀疑它不会删除此条目,因为集合中还有其他条目没有此字段。或者问题是别的什么?
"expireAt" : ISODate("2015-11-12T11:10:13.257Z")
Run Code Online (Sandbox Code Playgroud)
您指定的到期日期和时间是将来的。截至本回答发布之时,两分钟后即到期。这就是该文档仍未从您的集合中删除的原因。但很快就会被删除。
您指定的日期/时间格式Z末尾有一个 ,强制使用 UTC 时区。
| 归档时间: |
|
| 查看次数: |
9056 次 |
| 最近记录: |