2014-02-16 2 views
0

저는 mongoDB의 초보자입니다. 적어도 30 초 후에 데이터베이스에서 각 메시지를 삭제하고 싶습니다.MongoDB PHP는 ensureIndex와 함께 TTL을 사용합니다.

이것은 내 코드입니다.

$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)); 

답변

2

나는 견실 한 PHP 구문의 세부 사항을 알고하지 않습니다하지만 expire 필드는 날짜 시간이 아닌 부울을 포함해야합니다. 예를 들어 지금 만료를 설정하고 3037 expireAfterSeconds에 의존 할 수 있습니다. 더 유연하고 더 유연한 방법으로 만료 값을 이제 + 30 초로 설정할 수 있습니다. 이렇게하면 문서 당 다른 시간 제한을 선택할 수 있습니다.

TTL 기능은 만료 된 문서를 확인하는 모니터링 스레드를 사용하여 작동합니다. 그것이 두 번째로 정확할 것이라고 기대하지 마십시오 (다소 정확합니다).

데이터가 극히 수명이 짧고 대기열 등에 사용되는 경우, TTL 모음 대신 커서가있는 모음 및 대기 커서를 살펴볼 수 있습니다.

관련 문제