Scala连接mongodb数据库
来源:互联网 发布:淘宝女士小包包 编辑:程序博客网 时间:2024/05/18 02:50
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”,使用默认的端口号27017val mongoClient = MongoClient("mongodb01")// 连接到给定的主机“mongodb02”,并使用给定的端口号42017val 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这个条件的文档。
1 0
- Scala连接mongodb数据库
- scala 连接mysql数据库
- java连接mongodb数据库
- java连接MongoDB数据库
- python3连接mongodb数据库
- MongoDB数据库建立连接
- java连接MongoDB数据库
- JSP连接Mongodb数据库
- python连接mongodb数据库
- java连接Mongodb数据库
- C#连接MongoDB数据库
- scala调用jdbc连接数据库
- mongoDB驱动连接mongoDB数据库详解
- php 5.6连接mongodb 数据库
- 无法连接远程MongoDB数据库
- shell连接远程mongodb数据库
- Java连接MongoDB数据库测试
- node js连接mongodb数据库
- Android WebView 缓存处理
- 子类父类构造方法执行顺序举例
- HDU1800 Flying to the Mars
- POJ 2251 Dungeon Master(BFS)
- PDO中事物处理
- Scala连接mongodb数据库
- lua5.3源码基础阅读(luaL_openlibs)
- 【PHP内核】运算符:instanceof的内核实现
- 关于python的标准库
- MVC,MVP 和 MVVM 的图示
- 数据结构实验之排序一:一趟快排
- “开会” 引发的思考
- 第5周项目2(1) 游戏中的角色类
- MyBatis中配置Spring的事物