0

我知道我可以在 MongoDB 中设置 TTL

db.ttl_collection.ensureIndex( { "Date": 1 }, { expireAfterSeconds: 10 } ) 

我知道我可以确保在 Reactivemongo 中使用 Scala 建立索引

collection.indexesManager.ensure(index)

但是如何从代码中在反应蒙戈中设置 TTL 集合?或者有没有其他方法可以在 Scala 中使用 reactivemongo 在 Mongo 中制作过期记录?

4

2 回答 2

1

我终于发现了。这不是很明确的方法,但似乎有效:

collection.indexesManager.ensure(Index(Seq(("Date", IndexType(BSONInteger(1)))), Some("expireAfterSeconds"), false, false, false, false, None, BSONDocument( "expireAfterSeconds" -> 0 )

这样,此集合中每个带有 expireAfterSeconds: BSONDateTime 的对象都将在指定的日期之后过期但我什至不知道这些布尔值负责什么。

于 2014-11-23T17:31:29.607 回答
1

在我的项目中,我们有这个功能

  def ensureIndex(
               key: List[(String, IndexType)],
               name: Option[String] = None,
               unique: Boolean = false,
               background: Boolean = false,
               dropDups: Boolean = false,
               sparse: Boolean = false,
               version: Option[Int] = None,
               options: BSONDocument = BSONDocument()) = {

  val index = Index(key, name, unique, background, dropDups, sparse, version, options)
  log.info(s"Ensuring index: $index")
  collection.indexesManager.ensure(index)
}

我将它用于 TTL 索引($doc来自 BSON DSL),如下所示:

ensureIndex(List("lastModifiedOn" -> IndexType.Ascending), options = $doc("expireAfterSeconds" -> 30))
于 2015-09-12T13:10:17.937 回答