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数据库相关推荐

  1. powerbuilder(pb)连接mongodb数据库:使用ODBC连接

    1.点击此处下载mongodb的odbc驱动 注意:这里的odbc驱动是要收费的,所以下载体验版试试 2.下载后,一路next即可,不需要勾选配置数据源 3.配置ODBC数据源,因为pb使用的多数是3 ...

  2. python连接mongodb数据库密码_windows下mongodb设置用户名密码用python连接

    环境: 主机:WIN10 python版本:3.5 mongodb版本:3.4.2 开发环境:pyCharm mongodb设置用户名密码: 编写mongodb配置文件mongodb.conf dbp ...

  3. 如何连接mongodb数据库,并且从中查找数据

    最近在需要从mongodb中查找出数据,但是连接mongodb也是刚刚接触到,所有如何连接mongdb然后从中查找出数据 之前从https://www.cnblogs.com/minsons/arti ...

  4. python怎么连接MongoDB数据库

    Python 要连接 MongoDB 需要 MongoDB 驱动,这里我们使用 PyMongo 驱动来连接. pip 安装: pip3 install pymongo 引入库: import pymo ...

  5. node --- 模块化连接MongoDB数据库的参数设置方案之一

    数据库的初始化操作 连接的数据库的名称 包含连接数据库 初始化所有的Schemas 暴露给其他页面使用的接口 假设写在 database/init.js 中 const mongoose = requ ...

  6. python连接mongodb数据库、创建用户_mongodb对数据库创建用户名和密码

    MongoDB 有一个用户管理机制,简单描述为管理用户组,这个组的用户是专门为管理普通用户而设的,暂且称之为管理员.管理员通常没有数据库的读写权限,只有操作用户的权限,我们只需要赋予管理员 userA ...

  7. Python使用pymongo连接MongoDB数据库并进行操作

    一.基本概述 目前电脑上已经下载了MongoDB数据库.navicat for mongodb作为mongoDB的可视化工具,形如navicat for mysql作为mysql的可视化工具. 使用P ...

  8. 公网远程连接MongoDB数据库【内网穿透】

    文章目录 1. 安装数据库 2. 内网穿透 2.1 创建隧道映射 2.2 测试随机公网地址远程连接 3. 配置固定TCP端口地址 3.1 保留一个固定的公网TCP端口地址 3.2 配置固定公网TCP端 ...

  9. scala连接postgre数据库

    因为企业上使用postgre timescale数据库来保存实时数据,所以在做spark任务时需要去连接postgre数据库,demo如下: val conn_str = "jdbc:pos ...

最新文章

  1. 详细理解JS中的继承
  2. Hackbar PJ
  3. npm 下载 依赖包时出错的解决方式
  4. 【CQOI2017】小Q的表格
  5. 史上最全的主流CPU性能排名
  6. smartMeter
  7. 域控激活计算机用户,Windows2008AD 域控安装(示例代码)
  8. 前端VUE学习总结(一)
  9. 分销系统的用户关系数据库设计~
  10. PIN track 1000x1000's result
  11. matlab读多个excel,读取excel 多个表格文件数据-怎样利用matlab去读取一个excel表中多个sheet的数......
  12. 算术左移,算术右移;逻辑左移,逻辑右移
  13. LockSupport 以及 park、unpark 方法
  14. SAP中内部订单月结差异问题的实例
  15. 计算机怎样发现路由器上u盘,路由器上USB插口的4大功能,估计你连一个都没用过...
  16. i7 10510U性能怎么样?相当于台式机什么水平
  17. 刘自立:我看1936年柏林奥运会
  18. Solidworks 中mfc140.dll文件缺失导致无法运行问题解决方法
  19. 测试界的飞虎队:测试人才战略——测试行业的精英战略(学习了)
  20. 【华人学者风采】唐金辉 南京理工大学

热门文章

  1. iOS:图片上传时两种图片压缩方式的比较
  2. JavaScript消息框
  3. 利用MyBatis的动态SQL特性抽象统一SQL查询接口
  4. Qt中QTableWidget用法总结
  5. java打印word_Java jacob调用打印机打印word文档
  6. mybatis源码_Mybatis源码之SqlSession
  7. 尝试连接到服务器时出错请检查虚拟机管理器,Hyper-V尝试连接到服务器出错无效类的解决方法...
  8. php5.5 session,(五)ThinkPHP实践之Session驱动-TTLSA
  9. server2016做文件服务器,『配置』服务器搭建 Office Online Server2016 实现文档预览 番外 错误篇...
  10. usb大容量存储设备驱动_usb无法识别怎么办 如何解决usb识别故障【详细步骤】...