MongoDB 2.2부터 특수 색인 유형으로 구현 된 "Expire Data from Collections Using a TTL"이 가능합니다.Doctrine MongoDB를 사용하여 수집을위한 TTL 설정 ODM
Doctrine ORM의 최신 버전은 Index Option을 지원합니다. 불행히도 doctrine annotations/config 파일을 사용하여이 인덱스를 올바르게 설정하는 방법을 찾지 못했습니다. 인덱스가 생성 된 다음
<?php
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* @MongoDB\Document(collection="log")
* @MongoDB\Indexes({
* @MongoDB\Index(keys={"expiration"=1, "expireAfterSeconds"=30})
* //... other indexes go here
* })
*
*/
class Log
{
// ...
/**
* @MongoDB\Date
*/
protected $expiration;
// ...
}
을 나는 (심포니 인 2.3.x에서) php app/console doctrine:mongodb:schema:update
을 실행할 때 을 :
나는 그것을 시도하고있어 방법이, 내가 어떤 사람이 올바르게 설정 나를 도울 수 있기를 바랍니다 생성 된 색인이 올바르게 보이지 않습니다.
{ "v" : 1, "key" : { "expiration" : 1, "expireAfterSeconds" : 30 }, "ns" : "mydatabase.log", "sparse" : false, "name" : "expiration_1_expireAfterSeconds_-1" }
내가 수동으로 인덱스를 만들 경우와 동일하지 않습니다 : 그것은 다음과 같은 인덱스를 생성로
db.log.ensureIndex({ "expiration": 1 }, { expireAfterSeconds: 30 });
을
이
내가 내 데이터베이스에db.system.indexes.find();
을 실행할 때 내가 무엇을 얻을 :
doctrine annotati를 사용하여 날짜 필드에 TTL을 설정하는 방법 ons/config 파일?
답변 해 주셔서 감사합니다. 내가 당신의 대답에 기초하여 사용하는 것을 끝낸 것은 : @MongoDB \ Index (keys = { "expiration"= true}, options = { "expireAfterSeconds"= 30}) – Onema