在Heroku上使用Play Framework设置MongoLab或MongoHQ

Ank*_*kur 3 heroku mongodb playframework

我似乎无法找到在Heroku上使用Play Framework设置MongoHQ或MongoLab的任何说明.

是否有类似于Spring Framework的内容(我相信)https://devcenter.heroku.com/articles/mongohq#use-with-java我可以关注?

或者是否有人可以提供任何指示.

flu*_*rdy 7

MongoHQ为您的Heroku配置环境添加了MONGOHQ_URL

heroku config
Run Code Online (Sandbox Code Playgroud)

返回类似的东西

MONGOHQ_URL: mongodb://heroku:1234@someserver.mongohq.com:10071/app1234
Run Code Online (Sandbox Code Playgroud)

在您的应用程序中使用此envronment变量来获取将Mongo连接到的URI.我有一个可以在Procfile中指定的override属性

web: target/start -Dhttp.port=$PORT -Dmongodb.uri=$MONGOHQ_URL
Run Code Online (Sandbox Code Playgroud)

在Play模型类中,我连接并查询Mongo:

val mongoUri = MongoUri(Play.configuration.getString("mongodb.uri").get)

val mongoCollection = mongoUri.connectDB match {
  case Left(thrown) => throw thrown
  case Right(database) => {
    mongoUri.username.map { username =>
      mongoUri.password.map { password =>
        database.underlying.authenticate(username,password)
      }
    }
    database.apply("mycollection")
  }
}

def findSomething(something:String) = {
  val searchTerm = MongoDBObject("something" -> something)
  mongoCollection.findOne(searchTerm) map { mongoObject =>
    Logger.info("Found %s".format(mongoObject.getAs[String]("somethingElse")))
  }
}
Run Code Online (Sandbox Code Playgroud)

假设:Play 2.0,Scala,Casbah