Scala与Mongodb实践1-----mongodbCRUD
目的:如何使用MongoDB之前提供有关Scala驱动程序及其异步API。
1、现有条件
- IDEA中的:Scala+sbt+SDK
- mongodb-scala-driver的网址:http://mongodb.github.io/mongo-scala-driver/2.6/getting-started/installation-guide/
注: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的更多相关文章
- Scala与Mongodb实践2-----图片、日期的存储读取
目的:在IDEA中实现图片.日期等相关的类型在mongodb存储读取 主要是Scala和mongodb里面的类型的转换.Scala里面的数据编码类型和mongodb里面的存储的数据类型各个不同.存在类 ...
- Scala与Mongodb实践4-----数据库操具体应用
目的:在实践3中搭建了运算环境,这里学会如何使用该环境进行具体的运算和相关的排序组合等. 由数据库mongodb操作如find,aggregate等可知它们的返回类型是FindObservable.A ...
- Scala与Mongodb实践3-----运算环境的搭建
目的:使的在IDEA中编辑代码,令代码实现mongodb运算,且转换较为便捷 由实验2可知,运算环境的搭建亦需要对数据进行存储和计算,故需要实现类型转换,所以在实验2的基础上搭建环境. 由菜鸟教程可得 ...
- 使用Scala操作Mongodb
介绍 Scala是一种功能性面向对象语言.它融汇了很多前所未有的特性.而同一时候又执行于JVM之上.随着开发人员对Scala的兴趣日增,以及越来越多的工具支持,无疑Scala语言将成为你手上一件不可缺 ...
- Scala对MongoDB的增删改查操作
=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...
- 【Scala】Scala多线程-并发实践
Scala多线程-并发实践 scala extends Thread_百度搜索 scala多线程 - 且穷且独立 - 博客园 Scala和并发编程 - Andy Tech Talk - ITeye博客 ...
- Scala操作MongoDB
Scala操作MongoDB // Maven <dependencies> <dependency> <groupId>org.mongodb</group ...
- WebFlux 集成 Thymeleaf 、 Mongodb 实践 - Spring Boot(六)
这是泥瓦匠的第105篇原创 文章工程: JDK 1.8 Maven 3.5.2 Spring Boot 2.1.3.RELEASE 工程名:springboot-webflux-5-thymeleaf ...
- Spring Boot WebFlu-05——WebFlux 中 Thymeleaf 和 MongoDB 实践
第05课:WebFlux 中 Thymeleaf 和 MongoDB 实践 前言 本节内容主要还是总结上面两篇内容的操作,并实现一个复杂查询的小案例,那么没安装 MongoDB 的可以进行下面的安装流 ...
随机推荐
- Eclipse设置默认编码为UTF-8
需要设置的几处地方为: Window->Preferences->General ->Content Type->Text->JSP 最下面设置为UTF-8 Window ...
- java 集合类 & 容器
为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就要对对象进行存储,集合就是存储对象最常用的一种方式. 数组和集合类同是容器,有何不同? 数组虽然也可以存储 ...
- Java 自带性能监控工具:监视和管理控制台 jconsole 的使用
1. 前言想验证你对 jvm 配的一些调优参数(比如 Xms.Xmx 等)有没有起作用吗?想不想实时监控你自定义的线程池的在实际运行时的线程个数.有没有死锁?应用出现 java.lang.OutOfM ...
- 【codeforces 764B】Timofey and cubes
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- UVA 437 "The Tower of Babylon" (DAG上的动态规划)
传送门 题意 有 n 种立方体,每种都有无穷多个. 要求选一些立方体摞成一根尽量高的柱子(在摞的时候可以自行选择哪一条边作为高): 立方体 a 可以放在立方体 b 上方的前提条件是立方体 a 的底面长 ...
- VScode快捷键(最全)
按 Press 功能 Function Ctrl + Shift + P,F1 显示命令面板 Show Command Palette Ctrl + P 快速打开 Quick Open Ctrl + ...
- 类(class)和继承
.继承之前的写法 ↓ ----------------------------------------------------------------------------------------- ...
- LightOJ - 1287 Where to Run (期望dp+记忆化)
题面: Last night you robbed a bank but couldn't escape and when you just got outside today, the police ...
- SRTE测试
网络拓扑: XRV1 ======================================================================= hostname XRV1expl ...
- 第二阶段:2.商业需求文档MRD:4.MRD-核心目标-产品构成
竞争对手分析很重要.之后单独讲解.产品经理时刻要关注竞争产品的状态. 1.不同于PRD.这里只是概况.2.产品前景的核心目标就是:KPI(用户使用量:安装量,卸载量,日活数)跟ROI(开发人力,时间, ...