【问题标题】:MongoDB TTL sparse index?MongoDB TTL稀疏索引?
【发布时间】:2016-12-02 17:11:57
【问题描述】:

你能对稀疏字段进行 TTL 吗?如果是这样,您是否应该声明 TTL 索引稀疏?像这样?

db.eventlog.createIndex( { "lastModifiedDate": 1 }, { expireAfterSeconds: 3600 , sparse:"true"} )

【问题讨论】:

  • 一个更好的问题是:当索引稀疏时会更好吗?阅读有关 TTL 和稀疏索引的文档后,我不清楚:/

标签: mongodb indexing sparse-matrix ttl


【解决方案1】:
> use foo
switched to db foo
> db.foo.createIndex({date: 1}, {expireAfterSeconds: 5, sparse: true})
{
    "createdCollectionAutomatically" : false,
    "numIndexesBefore" : 1,
    "numIndexesAfter" : 2,
    "ok" : 1
}

> db.foo.getIndexes()
[
    {
        "v" : 1,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "foo.foo"
    },
    {
        "v" : 1,
        "key" : {
            "date" : 1
        },
        "name" : "date_1",
        "ns" : "foo.foo",
        "expireAfterSeconds" : 5,
        "sparse" : true
    }
]

> db.foo.insert({date: new Date()})

> db.foo.find()
{ "_id" : ObjectId("5841aeb650b5412e92ebbb9b"), "date" : ISODate("2016-12-02T17:26:14.617Z") }

> db.foo.find()
>

看来这工作得很好。请注意,根据documentation,TTL 操作每 60 秒左右触发一次,因此 expireAfterSeconds: 5 可能需要更长的时间。

【讨论】:

    猜你喜欢
    • 2018-01-22
    • 2013-06-12
    • 2018-06-12
    • 1970-01-01
    • 2012-07-07
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多