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. 参考文献

大概就是这样的感觉。作为一个全面的解释,请确认下面的内容。

    • 公式ドキュメント

 

    サンプルコード
广告
将在 10 秒后关闭
bannerAds