目的:如何使用MongoDB之前提供有关Scala驱动程序及其异步API。

1、现有条件

:Scala13太新,driver2.6.0是在Scala2.12中的

2、添加依赖包

libraryDependencies := Seq(
"org.mongodb.scala" %% "mongo-scala-driver" % "2.6.0",
"com.lightbend.akka" %% "akka-stream-alpakka-mongodb" % "0.20"
)

  

3、连接mongodb

 //方法1:简单连接
val client1=MongoClient("mongodb://192.168.1.135:27017") //方法2:可添加条件的连接(.build()前面)
val settings: MongoClientSettings = MongoClientSettings.builder()
.applyToClusterSettings(b => b.hosts(List(new ServerAddress("192.168.1.135")).asJava))
.build()
val mongoClient: MongoClient = MongoClient(settings)

  

4、选择database、collection

 val database: MongoDatabase = mongoClient.getDatabase("testdb")
val collection:MongoCollection[Document]=database.getCollection("test")

 然后Document可以通过CanbeBsonElement构建。CanbeBsonElement是一种key/value结构

 val Lily=Document("id"->1,"name"->"Lily","age"->22)
val Luzy=Document("city"->"shenzhen","capital"->"beijin","age"->"Luzy")

  

5、数据操作

  • 订阅
//在API中,Observables都是“冷”流,在订阅之前不会发生任何事情。可以把数据库中各种操作如find、insertOne等都是一个Observable
val addLily: Observable[Completed] =collection.insertOne(Lily)
val addLuzy=collection.insertOne(Luzy) //1、addLily
//Scala API使用Observer模式的自定义实现异步编程
//Observable订阅并且请求的数据才会发生操作
addLily.subscribe(new Observer[Completed]{
override def onComplete():Unit=println("insert lily complete.")
override def onNext(result: Completed):Unit=println("insert lily sucessful!")
override def onError(e:Throwable):Unit=println(s"insert error:${e.getMessage}")
})
  • Helper(内含headResult等方法)的headResult
 //2、addLuzy

    def headResult(observable: Observable[Completed])=Await.result(observable.head(),2 seconds)
val r1=headResult(addLuzy)
  • onComplete
// 删除文件

 val deleteAll=collection.deleteMany(notEqual("id",1))
deleteAll.head.onComplete{
case Success(v)=>println(s"delete successful $v")
case Failure(e)=>println(s"delete error:${e.getMessage}")
} //异步读取
scala.io.StdIn.readLine()

  

6、还有增删改查之类各种文档、索引等操作

http://mongodb.github.io/mongo-scala-driver/2.6/getting-started/quick-tour/

7、关闭连接

mongoClient.close()

  

Scala与Mongodb实践1-----mongodbCRUD的更多相关文章

  1. Scala与Mongodb实践2-----图片、日期的存储读取

    目的:在IDEA中实现图片.日期等相关的类型在mongodb存储读取 主要是Scala和mongodb里面的类型的转换.Scala里面的数据编码类型和mongodb里面的存储的数据类型各个不同.存在类 ...

  2. Scala与Mongodb实践4-----数据库操具体应用

    目的:在实践3中搭建了运算环境,这里学会如何使用该环境进行具体的运算和相关的排序组合等. 由数据库mongodb操作如find,aggregate等可知它们的返回类型是FindObservable.A ...

  3. Scala与Mongodb实践3-----运算环境的搭建

    目的:使的在IDEA中编辑代码,令代码实现mongodb运算,且转换较为便捷 由实验2可知,运算环境的搭建亦需要对数据进行存储和计算,故需要实现类型转换,所以在实验2的基础上搭建环境. 由菜鸟教程可得 ...

  4. 使用Scala操作Mongodb

    介绍 Scala是一种功能性面向对象语言.它融汇了很多前所未有的特性.而同一时候又执行于JVM之上.随着开发人员对Scala的兴趣日增,以及越来越多的工具支持,无疑Scala语言将成为你手上一件不可缺 ...

  5. Scala对MongoDB的增删改查操作

    =========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...

  6. 【Scala】Scala多线程-并发实践

    Scala多线程-并发实践 scala extends Thread_百度搜索 scala多线程 - 且穷且独立 - 博客园 Scala和并发编程 - Andy Tech Talk - ITeye博客 ...

  7. Scala操作MongoDB

    Scala操作MongoDB // Maven <dependencies> <dependency> <groupId>org.mongodb</group ...

  8. WebFlux 集成 Thymeleaf 、 Mongodb 实践 - Spring Boot(六)

    这是泥瓦匠的第105篇原创 文章工程: JDK 1.8 Maven 3.5.2 Spring Boot 2.1.3.RELEASE 工程名:springboot-webflux-5-thymeleaf ...

  9. Spring Boot WebFlu-05——WebFlux 中 Thymeleaf 和 MongoDB 实践

    第05课:WebFlux 中 Thymeleaf 和 MongoDB 实践 前言 本节内容主要还是总结上面两篇内容的操作,并实现一个复杂查询的小案例,那么没安装 MongoDB 的可以进行下面的安装流 ...

随机推荐

  1. 1、Python 日期时间格式化输出

    今天帮朋友写自动化脚本,又需要用格式化日期,又忘记怎么写了,还是写到自己博客里面,方便日后需要的时候看一眼吧.So,临时加一篇 Python 的文章. 1.Python的time模块 import t ...

  2. H3C 环路避免机制三:毒性逆转

  3. Linux 基础(一)stat函数

    Header file: #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> DEFI ...

  4. Codevs 均分纸牌(贪心)

    题目描述 Description 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸 ...

  5. JS异步解决方案

    前言 异步最早的解决方案是回调函数,如ajax,事件的回调,setInterval/setTimeout中的回调.但是回调函数有回调地狱的问题; 为了解决回调地狱的问题,社区提出了Promise解决方 ...

  6. codeforces 1183F 离散化枚举 约数定理

    codeforces1183F 有技巧的暴力 传送门:https://codeforces.com/contest/1183/problem/F 题意: 给你n个数,要你从中选出最多三个数,使得三个数 ...

  7. Android程序分析环境(搭建步骤略)

    1:安装JDK JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK).没有JDK的话,无法编译Java程序. 2:安装Android  SDK Androi ...

  8. SSL/TLS 配置

    Quick Start 下列说明将使用变量名 $CATALINA_BASE 来表示多数相对路径所基于的基本目录.如果没有为 Tomcat 多个实例设置 CATALINA_BASE 目录,则 $CATA ...

  9. JAVA8学习——深入浅出Lambda表达式(学习过程)

    JAVA8学习--深入浅出Lambda表达式(学习过程) lambda表达式: 我们为什么要用lambda表达式 在JAVA中,我们无法将函数作为参数传递给一个方法,也无法声明返回一个函数的方法. 在 ...

  10. easyUI demo2

    图片:               代码: jsp <%@ page language="java" import="java.util.*" pageE ...