Php 使用Doctrine MongoDB ODM设置集合的TTL
由于MongoDB 2.2,可以将“”作为一种特殊的索引类型实现 ORM的最新版本支持这一点。不幸的是,我无法找到如何使用条令注释/配置文件正确设置此索引 这就是我试图做到的,我希望有人能帮助我正确设置:Php 使用Doctrine MongoDB ODM设置集合的TTL,php,mongodb,symfony,doctrine-odm,ttl,Php,Mongodb,Symfony,Doctrine Odm,Ttl,由于MongoDB 2.2,可以将“”作为一种特殊的索引类型实现 ORM的最新版本支持这一点。不幸的是,我无法找到如何使用条令注释/配置文件正确设置此索引 这就是我试图做到的,我希望有人能帮助我正确设置: <?php use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB; /** * @MongoDB\Document(collection="log") * @MongoDB\Indexes({ * @Mong
<?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;
// ...
}
这与手动创建索引不同:
db.log.ensureIndex( { "expiration": 1 }, { expireAfterSeconds: 30 } );
在生成以下索引时:
{ "v" : 1, "key" : { "expiration" : 1 }, "ns" : "mydatabase.log", "name" : "expiration_1", "expireAfterSeconds" : 30 }
如何使用条令注释/配置文件在日期字段上设置TTL?您将索引选项与
键混用。索引
注释还有一个选项
参数。请参见中的示例:
谢谢你的回答!根据您的回答,我最终使用的是:@MongoDB\Index(key={“expiration”=true},options={“expireaftersons”=30})
{ "v" : 1, "key" : { "expiration" : 1 }, "ns" : "mydatabase.log", "name" : "expiration_1", "expireAfterSeconds" : 30 }
<?php
/**
* @Document(
* indexes={
* @Index(keys={"username"="desc"}, options={"unique"=true})
* }
* )
*/
class User
{
//...
}