我是mongoDB的初学者。我想在至少30秒之后删除数据库中的每条消息。
这是我的代码。
$mess = array(
"login" => $_SESSION['name'],
"message" => $_POST['msg'],
"expire" => true
);
$db->chat->insert($mess);
$collection = $db->chat;
$collection->ensureIndex(array('expire' => true), array('expireAfterSeconds' => 30));
答案 0 :(得分:2)
我不知道粗略的PHP语法细节,但expire
字段必须包含日期时间,而不是布尔值。例如,您可以将过期设置为现在并依赖于30 expireAfterSeconds
。或者,更灵活,您可以将过期值设置为现在+ 30秒(允许您为每个文档选择不同的超时)。
请注意,TTL功能使用监控线程,该线程将不时检查过期的文档。不要指望它是第二精确的(它相当精确)。
如果您的数据非常短暂并且用于队列或某些内容,您可能需要查看上限集合和tailable游标而不是TTL集合。