Срок действия документов не истекает с использованием TTL в mongodb 2.6.7

Я пытаюсь использовать функцию TTL в оболочке mongo, но не могу заставить ее работать. Я трижды проверил все, используя документацию.

Вот что я сделал:

MongoDB shell version: 2.6.7
connecting to: test

> db.streamers.getIndexes()
[
        {
                "v" : 1,
                "key" : {
                        "_id" : 1
                },
                "name" : "_id_",
                "ns" : "test.streamers"
        },
        {
                "v" : 1,
                "key" : {
                        "room" : 1
                },
                "name" : "room_1",
                "ns" : "test.streamers",
                "background" : true,
                "safe" : null
        },
        {
                "v" : 1,
                "key" : {
                        "lastAlive" : 1
                },
                "name" : "lastAlive_1",
                "ns" : "test.streamers",
                "expiresAfterSeconds" : 60,
                "background" : true,
                "safe" : null
        }
]

> db.streamers.insert({ _id: "hello", room: "yop", lastAlive: new Date() })
WriteResult({ "nInserted" : 1 })

[ожидание здесь некоторое время...]

> db.streamers.find({ _id: "hello" })
{ "_id" : "hello", "room" : "yop", "lastAlive" : ISODate("2015-02-18T13:03:02.836Z") }

> new Date()
ISODate("2015-02-18T13:50:50.403Z")

Итак, ясно, что документ не удаляется даже после ожидания более часа. db.currentOp() также возвращает пустой массив.

Это среда разработки, поэтому mongodb находится в автономной конфигурации с настройками по умолчанию. GetParameter для ttlMonitorEnabled возвращает true, так что это тоже нормально.

Что здесь не так?


person Tug    schedule 18.02.2015    source источник


Ответы (1)


В вашем индексе была опечатка.

Параметр expiresAfterSeconds должен быть expireAfterSeconds.

person NoOutlet    schedule 18.02.2015
comment
Большое спасибо NoOutlet, я с ума сходил от этого :-) - person Tug; 18.02.2015