- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
从 MongoDB 2.2 开始,可以将“Expire Data from Collections Using a TTL”实现为一种特殊的索引类型。
最新版本的 Doctrine ORM 支持这个 Index Option .不幸的是,我无法找到如何使用原则注释/配置文件正确设置此索引。
这就是我尝试做的方式,我希望有人能帮助我正确设置它:
<?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;
// ...
}
然后当我执行 php app/console doctrine:mongodb:schema:update
时(在 symfony 2.3.x 中)索引已生成,但生成的索引看起来不正确。
这是我在数据库中执行 db.system.indexes.find();
时得到的结果:
{ "v" : 1, "key" : { "expiration" : 1, "expireAfterSeconds" : 30 }, "ns" : "mydatabase.log", "sparse" : false, "name" : "expiration_1_expireAfterSeconds_-1" }
这与我手动创建索引不同:
db.log.ensureIndex( { "expiration": 1 }, { expireAfterSeconds: 30 } );
因为它生成以下索引:
{ "v" : 1, "key" : { "expiration" : 1 }, "ns" : "mydatabase.log", "name" : "expiration_1", "expireAfterSeconds" : 30 }
如何使用原则注释/配置文件在日期字段上设置 TTL?
最佳答案
您将索引选项与 keys
参数混合使用。 Index
注释还有一个 options
参数。请参阅 Index annotation docs 中的示例:
<?php
/**
* @Document(
* indexes={
* @Index(keys={"username"="desc"}, options={"unique"=true})
* }
* )
*/
class User
{
//...
}
这相当于传递 {unique: true}
作为第二个参数 db.collection.ensureIndex()
。您可以将 unique
替换为 expireAfterSeconds
以创建 TTL 索引。
关于php - 使用 Doctrine MongoDB ODM 为收集设置 TTL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18387901/
我需要 MongoDB 中的自动递增字段。我找到了 documentation on how to use a counter-collection in MongoDB . 但是,我的值 id 不是
我需要 MongoDB 中的自动递增字段。我找到了 documentation on how to use a counter-collection in MongoDB . 但是,我的值 id 不是
我在 ZF2 + Doctrine ODM + doctrine-mongodb-odm-module 上有应用,但找不到如何使用这些模块创建分页的示例。有没有这样的例子? 最佳答案 试试看这里Doc
我正在尝试通过特殊验证事件来验证数据完整性。我的 Phalcon\Mvc\Collection 模型使用一些 Phalcon\Mvc\Model\Validator 验证器实现了validation(
我有一个已经变成表格的 Doctrine mongodb 文档。该文档有两个 emebedOne 文档,它们也在表单中。正在验证主文档,但未验证嵌入文档。我正在使用自定义断言,但我认为这并不重要。 文
我目前正在处理嵌入文档,我需要从父文档中获取帐户信息以生成 URL。如何从嵌入文档的 getter 访问父文档? /** @文档 */ 类用户 { //... /** @EmbedOne(target
我想在我的项目中使用 doctrine ODM,我想为我的每个客户建立一个单独的数据库。我希望能够通过我的 API 在运行时管理客户端。我现在的问题是: 当我设置 doctrine ODM 时,我必须
我们正在使用 Symfony2/DoctrineOdm/MongoDB,当我们这样做时: if ($doc.referenceOne != null) { ... } 和 $doc.reference
我遇到以下问题:使用 distinct 时无法限制结果数。例子: $stores = $this->dm->createQueryBuilder('Application\Document\Item'
我开始编写 Doctrine 2 Mongo ODM 单元测试,但意识到我的代码中没有好的策略来执行此操作。我想运行测试并实际保留对象,但我希望允许在拆解中轻松删除我的测试数据。集合和数据库名称必须根
我想知道是否可以在 phalcon ODM 中进行批量删除(使用单个操作),而不是通过“delete()”方法获取文档并在循环中一个一个地删除它们? 我需要这样的东西: $db->users->rem
我已经按照 中的描述设置了一个类 http://www.doctrine-project.org/docs/mongodb_odm/1.0/en/reference/geospatial-querie
这可能是一个愚蠢的问题,但我正在努力在 mongoDB 文档中保存一个大数字。 基本上,我想保存一个可以大于 max int 值的数字。因此,我将我的文档字段声明为 @Field(type="floa
我一直在尝试减少 Web API 上的数据库查询数量。我的数据库有 3 个集合:playground、widget、token 一个 Playground 有很多小部件,一个小部件有一个 token
我一直收到这个错误: PHP Fatal error: Uncaught exception 'Doctrine\Common\Annotations\AnnotationException' wit
我正在 koajs 中构建一个样板应用程序供以后使用。我无法决定是否应该使用 ODM。我可以使用 ES6 类定义我的模式,即使我使用像 mongoose 这样的东西,我也可能最终会编写大量自定义验证器
继续我关于 EAV 的问题,我正在考虑使用MongoDB来存储产品属性。 我将使用 MongoDB(或其他文档数据库)存储此应用程序的目录部分 - 类别、产品及其所有相关信息。 我的问题是,当使用 O
我将如何在学说 odm 中模拟 SQL 中的 like 运算符? 用例:我想在变量 $search 的字段标题字符串中找到一个主题。 查询会是什么样子? 感谢所有回答 最佳答案 使用 MongoReg
我有一个关于(顺便说一句真的很棒!)Doctrine ODM 的简单问题。 假设您有这样的文档: /** * @Document */ class Test { /** @Id */
我想知道是否有相当于 MySQL-Query 的: SELECT COUNT(*) FROM users 在 MongoDB ODM 中? 这可能有效: $qb = $this->dm->cre
我是一名优秀的程序员,十分优秀!