MongoDB的官方驱动程序(Mongo Scala Driver)用于在Scala中使用
首先
Mongo Scala Driver是用于从Scala访问MongoDB的官方驱动程序。
这个系统被设计成异步运行,并且使用观察者模式来定义特征。
由于之前被视为MongoDB官方Scala驱动程序的Casbah与其完全不同,而且对于Observer模式也不熟悉,所以可能会感到困惑。因此,我将总结一下基本用法,并提供了简化的官方示例代码。
1. 准备就绪
验证环境
-
- Mac OS X El Capitan Version 10.11.3
-
- Scala 2.11.7
-
- MongoDB 3.2.1
- Mongo Scala Driver 1.1.0
安装
使用sbt进行安装。
libraryDependencies ++= Seq(
"org.mongodb.scala" %% "mongo-scala-driver" % "1.1.+"
)
文件结构
我已经验证文件结构如下所示。
test
├ Helpers.scala
└ MongoDB.scala
Helpers.scala的中文解释
为了隐藏繁琐的观察者处理,创建辅助对象来完成。
通过使用`results`方法执行查询,并以`Seq`形式返回结果。
package test
import java.util.concurrent.TimeUnit
import org.mongodb.scala.{Completed, Document, Observable}
import scala.concurrent.Await
import scala.concurrent.duration.Duration
object Helpers {
implicit class DocumentObservable[C](val observable: Observable[Document]) extends ImplicitObservable[Document]
implicit class CompletedObservable[C](val observable: Observable[Completed]) extends ImplicitObservable[Completed]
trait ImplicitObservable[C] {
val observable: Observable[C]
def results: Seq[C] = Await.result(observable.toFuture(), Duration(10, TimeUnit.SECONDS))
}
}
MongoDB的Scala实现
我們正在定義一個物件,以實際驗證驅動程式的使用方式。
package test
import org.mongodb.scala._
import test.Helpers._
object MongoDB {
def main(args: Array[String]) {
// 検証コード
}
}
2. 常用的方法
2.1. 连接到数据库并获取集合对象。
我们将使用Collection名称为products进行验证。
// Localで稼働中のMongoDBに接続する
val mongoClient: MongoClient = MongoClient()
// Databaseを取得する
val database: MongoDatabase = mongoClient.getDatabase("mydb")
// Collectionを取得する
val products: MongoCollection[Document] = database.getCollection("products")
2.2. 删除Collection: drop
// CollectionをDropして初期化する
products.drop.results
2.3. 插入类方法
插入一条记录到Document中:insertOne
val doc1: Document = Document("name" -> "MongoDB", "type" -> "database", "count" -> 1, "info" -> Document("x" -> 203, "y" -> 102))
products.insertOne(doc1).results.foreach(println)
批量插入N个Document:insertMany
// Bulk INSERT
val doc2 = (1 to 100) map { i: Int => Document("name" -> i) }
products.insertMany(doc2).results.foreach(println)
2.4. 参照系方法
请参考所有内容:查找
products.find.results.foreach(r => println(r.toJson))
找到第一条记录:find.first
products.find.first.results.foreach(r => println(r.toJson))
指定条件进行查询。
在文档中设定条件:查找(doc3)。
// SELECT * FROM products WHERE name = "MongoDB"
val doc3 = Document("name" -> "MongoDB")
products.find(doc3).results.foreach(r => println(r.toJson))
在筛选条件上进行指定:与、大于、小于等。
products.find(and(gt("name", 50), lte("name", 60))).results.foreach(r => println(r.toJson))
释放资源
mongoClient.close
3. 参考文献
大概就是这样的感觉。作为一个全面的解释,请确认下面的内容。
-
- 公式ドキュメント
- サンプルコード