0

MongoDBでTTLを設定できることを知っています

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

そして、ReactivemongoでScalaを使用してインデックスを確保できることを知っています

collection.indexesManager.ensure(index)

しかし、reactivemongo でコードから TTL コレクションを設定するにはどうすればよいでしょうか? または、Scala で reactmongo を使用して 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 インデックスには次のように使用します ( $docBSON DSL に由来します)。

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