Scala连接mongodb数据库
mongodb是一种面向文档的数据库,Scala是一种函数式编程语言,由于项目的关系,需要使用Scala连接mongodb数据库。下面介绍具体的方法。
就像Java连接MySQL数据库需要JDBC一样,Scala连接mongodb数据库也需要一种中间件,这里使用casbah,这里给出了casbah的一些指导。
使用casbah需要下载casbah的jar包,由于已经在Intellij Idea搭建Spark开发环境中介绍了使用Idea+maven的搭建,这里不需要手动下载,使用maven的包管理工具自动加载说需要的依赖即可,其中,具体地依赖信息如下:
<dependency><groupID>org.mongodb</groupID><artifactID>casbah-core_2.10</artifactID><version>3.1.1</version>
</dependency>
其中version对应使用的版本号。这样,maven就会自动下载所需要的依赖了。
在Scala程序中,要想使用casbah里面的类,需要添加如下的import:
import com.mongodb.casbah.Imports._
首先,需要连接数据库。在安装mongodb的时候,默认的是使用的27017端口,下面是一些连接mongodb数据库的实例:
// 链接到默认主机(localhost)和默认端口号(27017)
val mongoClient = MongoClient()// 连接到给定的主机“mongodb01”,使用默认的端口号27017
val mongoClient = MongoClient("mongodb01")// 连接到给定的主机“mongodb02”,并使用给定的端口号42017
val mongoClient = MongoClient("mongodb02", 42017)
还可以使用MongoDB URL连接数据库:
val uri = MongoClientURI("mongodb://localhost:27017/")
val mongoClient = MongoClient(uri)
连接到数据库后,就可以获得具体的数据库(db)和集合(collection)了。使用下面的代码可以获得指定的数据库:
val db = mongoClient("test")
这样就获得了“test”这个数据库。然后就可以通过这个数据库获得集合:
val coll = db("casbah")
获得了“casbah”这个集合。如果数据库中没有这个集合,mongodb会创建这个集合。
得到集合后,就可以对这个集合进行增删改查的操作了。casbah中使用MongoDBObject来创建一个文档:
val a=MongoDBObject("x"->1)
val b=MongoDBObject("x"->2)
这样就创建了两个文档。casbah中对集合的操作就像在mongodb的交互式脚本中对集合的操作一样,比如使用insert进行插入操作:
coll.insert( a )
coll.insert( b )
这样就将刚才创建的两个文档插入数据库中了。
同样可以使用count和find进行读取:
val n=coll.count()
val allDocs=coll.find()
下面是一个简单的例子:
package com.liu/*** Created by hadoop on 16-4-1.*/
import com.mongodb.casbah.Imports._
object CasbahDemo {def main(args:Array[String]): Unit ={val mongoClient=MongoClient("localhost",27017)val db=mongoClient("test")val coll=db("casbah")val a=MongoDBObject("x"->1)val b=MongoDBObject("x"->2)coll.insert(a)coll.insert(b)val allDocs=coll.find()allDocs.foreach(println)}
}
这段代码仅仅是上面介绍的罗列。运行结果如下:
同时,在一个终端连接到mongodb,使用交互式脚本进行查询,结果如下:
可见,Scala中操纵mongodb已经成功了。
下面介绍Scala操纵mongodb的删改操作。
就像交互式脚本一样,casbah也可以使用文档作为查询条件,比如这样:
val c=MongoDBObject("x"->2)
val d=coll.find(c)
同理,对于修改操作,也是这样:
val e=MongoDBObject("x"->3)
coll.update(a,e)
第一个参数是查询条件,第二个参数是更新的文档,这样,原来的a就编程现在的e了。
在mongodb中,使用$set表示只进行更新操作,而不替换原来的内容。在casbah中,也可以使用$set:
val f=$set("y"->1)
coll.update(e,f)
这样,就将原来的{"x":3}变为现在的{"x":3,"y":1}。
对于删除操作也是同理:
coll.remove(f)
就会删除符合f这个条件的文档。
Scala连接mongodb数据库相关推荐
- powerbuilder(pb)连接mongodb数据库:使用ODBC连接
1.点击此处下载mongodb的odbc驱动 注意:这里的odbc驱动是要收费的,所以下载体验版试试 2.下载后,一路next即可,不需要勾选配置数据源 3.配置ODBC数据源,因为pb使用的多数是3 ...
- python连接mongodb数据库密码_windows下mongodb设置用户名密码用python连接
环境: 主机:WIN10 python版本:3.5 mongodb版本:3.4.2 开发环境:pyCharm mongodb设置用户名密码: 编写mongodb配置文件mongodb.conf dbp ...
- 如何连接mongodb数据库,并且从中查找数据
最近在需要从mongodb中查找出数据,但是连接mongodb也是刚刚接触到,所有如何连接mongdb然后从中查找出数据 之前从https://www.cnblogs.com/minsons/arti ...
- python怎么连接MongoDB数据库
Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接. pip 安装: pip3 install pymongo 引入库: import pymo ...
- node --- 模块化连接MongoDB数据库的参数设置方案之一
数据库的初始化操作 连接的数据库的名称 包含连接数据库 初始化所有的Schemas 暴露给其他页面使用的接口 假设写在 database/init.js 中 const mongoose = requ ...
- python连接mongodb数据库、创建用户_mongodb对数据库创建用户名和密码
MongoDB 有一个用户管理机制,简单描述为管理用户组,这个组的用户是专门为管理普通用户而设的,暂且称之为管理员.管理员通常没有数据库的读写权限,只有操作用户的权限,我们只需要赋予管理员 userA ...
- Python使用pymongo连接MongoDB数据库并进行操作
一.基本概述 目前电脑上已经下载了MongoDB数据库.navicat for mongodb作为mongoDB的可视化工具,形如navicat for mysql作为mysql的可视化工具. 使用P ...
- 公网远程连接MongoDB数据库【内网穿透】
文章目录 1. 安装数据库 2. 内网穿透 2.1 创建隧道映射 2.2 测试随机公网地址远程连接 3. 配置固定TCP端口地址 3.1 保留一个固定的公网TCP端口地址 3.2 配置固定公网TCP端 ...
- scala连接postgre数据库
因为企业上使用postgre timescale数据库来保存实时数据,所以在做spark任务时需要去连接postgre数据库,demo如下: val conn_str = "jdbc:pos ...
最新文章
- 详细理解JS中的继承
- Hackbar PJ
- npm 下载 依赖包时出错的解决方式
- 【CQOI2017】小Q的表格
- 史上最全的主流CPU性能排名
- smartMeter
- 域控激活计算机用户,Windows2008AD 域控安装(示例代码)
- 前端VUE学习总结(一)
- 分销系统的用户关系数据库设计~
- PIN track 1000x1000's result
- matlab读多个excel,读取excel 多个表格文件数据-怎样利用matlab去读取一个excel表中多个sheet的数......
- 算术左移,算术右移;逻辑左移,逻辑右移
- LockSupport 以及 park、unpark 方法
- SAP中内部订单月结差异问题的实例
- 计算机怎样发现路由器上u盘,路由器上USB插口的4大功能,估计你连一个都没用过...
- i7 10510U性能怎么样?相当于台式机什么水平
- 刘自立:我看1936年柏林奥运会
- Solidworks 中mfc140.dll文件缺失导致无法运行问题解决方法
- 测试界的飞虎队:测试人才战略——测试行业的精英战略(学习了)
- 【华人学者风采】唐金辉 南京理工大学
热门文章
- iOS:图片上传时两种图片压缩方式的比较
- JavaScript消息框
- 利用MyBatis的动态SQL特性抽象统一SQL查询接口
- Qt中QTableWidget用法总结
- java打印word_Java jacob调用打印机打印word文档
- mybatis源码_Mybatis源码之SqlSession
- 尝试连接到服务器时出错请检查虚拟机管理器,Hyper-V尝试连接到服务器出错无效类的解决方法...
- php5.5 session,(五)ThinkPHP实践之Session驱动-TTLSA
- server2016做文件服务器,『配置』服务器搭建 Office Online Server2016 实现文档预览 番外 错误篇...
- usb大容量存储设备驱动_usb无法识别怎么办 如何解决usb识别故障【详细步骤】...