mongodb+casbah+scala

遅まきながらmongodbの勉強。sbt-0.10でプロジェクトを作る。

$ mkdir sbt-mongo
$ cd sbt-mongo

ここで、build.sbtを作成。内容は以下。

name := "Hello Mongo+Casbah"

version := "1.0.0"

scalaVersion := "2.9.0"

organization := ""

libraryDependencies ++= Seq(
"com.mongodb.casbah" % "casbah_2.9.0-1" % "2.1.5-1"
)

mainClass in(Compile, run) := Some("mongo.casbah.Sample")

で、sbt実行

$ sbt

するとproject, targetディレクトリができる。ここで、src/main/scala/mongo.casbah/Sample.scalaを以下のように作成。

package mongo.casbah

import com.mongodb.casbah.Imports._

object Sample {
def main(args:Array[String]) {
val collection = MongoConnection()("casbah_test")("sample")

val user = MongoDBObject("id"->1, "name"->"me", "address"->"テスト満載")
println(user)
collection += user

collection.find().foreach { println(_) }
}
}

で、sbtプロンプトでrunすると、

> run
run
[info] Compiling 1 Scala source to /net/ares/disk1/home/yano/project/scala/sbt-scalaquery/target/scala-2.9.0.final/classes...
[info] Running mongo.casbah.Sample
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
{ "name" : "me" , "address" : "テスト満載"}
{ "_id" : { "$oid" : "4e1e5687d6f3c6582990f4c6"} , "name" : "me" , "address" : "テスト満載"}
[success] Total time: 8 s, completed 2011/07/14 11:38:00

となる。

これをmongodbのプロンプトで見てみると、

$ mongo
MongoDB shell version: 1.8.2
connecting to: test
> use casbah
switched to db casbah
> db.sample.find()
{ "_id" : ObjectId("4e1e5687d6f3c6582990f4c6"), "name" : "me", "address" : "テスト満載" }

となる。

mongodbもcasbahもsbtにも慣れていないので要領が悪いが、ぼちぼち進めていきたい。