/src/main/scala/wtf/scala/e13/lecture/CasbahExamples.scala

https://bitbucket.org/Tolsi/scala-school-2018-2 · Scala · 69 lines · 45 code · 21 blank · 3 comment · 0 complexity · 351950c1cbd76420a6d0ad070a17b41b MD5 · raw file

  1. package wtf.scala.e13.lecture
  2. import com.github.fakemongo.Fongo
  3. import com.mongodb.casbah.Imports._
  4. import com.mongodb.{BasicDBList, DBObject}
  5. import com.mongodb.casbah.MongoCollection
  6. import com.mongodb.casbah.commons.MongoDBObject
  7. import scala.collection.JavaConverters._
  8. case class Entity(_id: String, params: Param)
  9. case class Param(x: Int, y: Seq[Int])
  10. object CasbahExamples extends App {
  11. val host = "localhost:27017"
  12. val db = "big_cash"
  13. val collection = "test"
  14. // val mongoClient: MongoClient = MongoClient(host)
  15. // val dbCLient: MongoDB = MongoClient(host)(db)
  16. // val collectionClient: MongoCollection = MongoClient(host)(db)(collection)
  17. val fongo = new Fongo("test")
  18. val collectionClient = new MongoCollection(fongo.getDB(db).getCollection(collection))
  19. collectionClient.findOneByID("333").map { o =>
  20. val id = o.get("_id").toString
  21. val params = o.get("params").asInstanceOf[DBObject]
  22. val x = params.as[Double]("x").toInt
  23. val y = params.get("y").asInstanceOf[BasicDBList].iterator().asScala.toList.map(_.toString.toDouble.toInt)
  24. Entity(id, Param(x, y))
  25. }
  26. val cursor = collectionClient.find(MongoDBObject("params.x" -> 15))
  27. val ids = cursor.map { o =>
  28. o.get("_id").toString
  29. }.toList
  30. cursor.close()
  31. val rangeCursor = collectionClient.find("params.x" $gt 14 $lt 16)
  32. val rangeIds = rangeCursor.map { o =>
  33. o.get("_id").toString
  34. }.toList
  35. rangeCursor.close()
  36. val writeResult: WriteResult = collectionClient.insert(MongoDBObject("_id" -> "0011", "params" -> MongoDBObject("x" -> 1, "y" -> List(0, 0, 1))))
  37. writeResult.getN
  38. writeResult.isUpdateOfExisting
  39. writeResult.getUpsertedId
  40. val removedDoc: Option[DBObject] = collectionClient.findAndRemove(MongoDBObject("_id" -> "001"))
  41. print(removedDoc)
  42. val removeResult: WriteResult = collectionClient.remove(MongoDBObject("_id" -> "0011", "params" -> MongoDBObject("x" -> 1, "y" -> List(0, 0, 1))))
  43. val updateResult: WriteResult = collectionClient.update(MongoDBObject("_id" -> "0011"),
  44. $set("params.x" -> 1),
  45. upsert = false,
  46. multi = true)
  47. val saveResult: WriteResult = collectionClient.save(MongoDBObject("_id" -> "9", "params" -> MongoDBObject("x" -> 1, "y" -> List(0, 0, 1))))
  48. }