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 的可以进行下面的安装流 ...
随机推荐
- 1、Python 日期时间格式化输出
今天帮朋友写自动化脚本,又需要用格式化日期,又忘记怎么写了,还是写到自己博客里面,方便日后需要的时候看一眼吧.So,临时加一篇 Python 的文章. 1.Python的time模块 import t ...
- H3C 环路避免机制三:毒性逆转
- Linux 基础(一)stat函数
Header file: #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> DEFI ...
- Codevs 均分纸牌(贪心)
题目描述 Description 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸 ...
- JS异步解决方案
前言 异步最早的解决方案是回调函数,如ajax,事件的回调,setInterval/setTimeout中的回调.但是回调函数有回调地狱的问题; 为了解决回调地狱的问题,社区提出了Promise解决方 ...
- codeforces 1183F 离散化枚举 约数定理
codeforces1183F 有技巧的暴力 传送门:https://codeforces.com/contest/1183/problem/F 题意: 给你n个数,要你从中选出最多三个数,使得三个数 ...
- Android程序分析环境(搭建步骤略)
1:安装JDK JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK).没有JDK的话,无法编译Java程序. 2:安装Android SDK Androi ...
- SSL/TLS 配置
Quick Start 下列说明将使用变量名 $CATALINA_BASE 来表示多数相对路径所基于的基本目录.如果没有为 Tomcat 多个实例设置 CATALINA_BASE 目录,则 $CATA ...
- JAVA8学习——深入浅出Lambda表达式(学习过程)
JAVA8学习--深入浅出Lambda表达式(学习过程) lambda表达式: 我们为什么要用lambda表达式 在JAVA中,我们无法将函数作为参数传递给一个方法,也无法声明返回一个函数的方法. 在 ...
- easyUI demo2
图片: 代码: jsp <%@ page language="java" import="java.util.*" pageE ...