使用Scala操作Mongodb
介绍
Scala是一种功能性面向对象语言。它融汇了很多前所未有的特性。而同一时候又执行于JVM之上。随着开发人员对Scala的兴趣日增,以及越来越多的工具支持,无疑Scala语言将成为你手上一件不可缺少的工具。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库其中功能最丰富,最像关系数据库的。他支持的数据结构很松散,是类似json的bson格式。因此能够存储比較复杂的数据类型。
Mongo最大的特点是他支持的查询语言很强大,其语法有点类似于面向对象的查询语言,差点儿能够实现类似关系数据库单表查询的绝大部分功能,并且还支持对数据建立索引。
在本文中。我们将介绍使用 Scala
语言怎样与 Mongodb
进行连接与数据处理。
环境安装与配置
第一。 安装Mongodb和Scala,假设已经安装。能够跳过这一步。详细安装步骤请自行搜索。
第二。 安装SBT。SBT是Scala中的构建工具。作用相当于Maven。
安装比較简单,详细步骤请參考:http://www.scala-sbt.org/0.13/tutorial/zh-cn/Setup.html
第三, 等安装完毕后。在控制台运行sbt命令,出现类似下面的信息就能够了:
[root@centos6 scala-project]# sbt
[info] Loading global plugins from /root/.sbt/0.13/plugins
[info] Set current project to Casbah Tutorial (in buildfile:/home/apache/src/scala-project/)
>
第四:创建一个測试项目,并载入Casbah库。Casbah是Mongodb的scala driver
mkdir test-project
cd test-project
vi build.sbt,输入:
name := "Casbah Test"
version := "1.0"
scalaVersion := "2.11.2"
libraryDependencies += "org.mongodb" %% "casbah"% "2.7.3"
注意:build.sbt文件里每行要有一个空行切割。
如有问题请參考http://mongodb.github.io/casbah/guide/installation.html
完毕后输入命令:sbtconsole,第一次执行会自己主动下载casbah及依赖的其他库,载入完毕后例如以下类似例如以下的信息就能够了。
Welcome to Scala version 2.11.2 (Java HotSpot(TM) 64-Bit Server VM,Java 1.7.0_13).
Type in expressions to have them evaluated.
Type :help for more information.
scala>
连接Mongodb
载入scala shell:sbt console
importcom.mongodb.casbah.Imports._
val mongoClient= MongoClient("localhost", 27017)
注意:能够在控制台输入mongoClient. + 空格键,系统会自己主动提示可用的操作。
支持多种连接方式:
1. 简单方式
// Connect to default - localhost, 27017
val mongoClient = MongoClient()
// connect to "mongodb01" host, default port
val mongoClient = MongoClient("mongodb01")
// connect to "mongodb02" host, port 42017
val mongoClient = MongoClient("mongodb02", 42017)
2. URI方式
val uri = MongoClientURI("mongodb://localhost:27017/")
val mongoClient = MongoClient(uri)
3. 支持权限验证方式
//Challenge Response
valserver = new ServerAddress("localhost", 27017)
valcredentials = MongoCredential.createMongoCRCredential(userName, database,password)
valmongoClient = MongoClient(server, List(credentials))
// X.509Protocol
valserver = new ServerAddress("localhost", 27017)
valcredentials = MongoCredential.createMongoX509Credential(userName)
valmongoClient = MongoClient(server, List(credentials))
…
很多其它连接信息,请參考:http://mongodb.github.io/casbah/guide/connecting.html
我们在Mongodb中创建一个test_db的数据库和test collection,并选择简单的用户password方式,例如以下:
val server = newServerAddress("localhost", 27017)
val credentials =MongoCredential.createMongoCRCredential(“user”, “test_db”, “pass”.toArray)
val mongoClient= MongoClient(server, List(credentials))
出现类似例如以下信息即连接成功:
res2:com.mongodb.casbah.MongoClient = com.mongodb.casbah.MongoClient@42143c61
获取数据库和连接:
val db = mongoClient("test_db")
db.collectionNames
val coll = db("test")
增删改查操作
添加
val user1 = MongoDBObject("name"-> "user1")
val user2 = MongoDBObject("name"-> "user2")
coll.insert(user1)
coll.insert(user2)
读取
coll.count() //读取总记录数
也能够使用find读取记录,比方读取全部记录并打印出来:
coll.find().foreach(println)
val query1 =MongoDBObject("name"->"user1")
coll.findOne(query1)
更新
val update1 =MongoDBObject("email"->"user1@test.com")
val result1 = coll.update(query1,update1)
println( "Number updated: " +result.getN )
或者val result = coll.update( query, update, upsert=true )//upsert=true,假设不存在就insert
删除
val query2 = MongoDBObject(“name”->”user2”)
val result2 = coll.remove(query2)
删除集合
coll.drop()
很多其它使用方法请參考casbah的用户文档http://mongodb.github.io/casbah/index.html
版权声明:本文博客原创文章,博客,未经同意,不得转载。
使用Scala操作Mongodb的更多相关文章
- Scala操作MongoDB
Scala操作MongoDB // Maven <dependencies> <dependency> <groupId>org.mongodb</group ...
- Scala对MongoDB的增删改查操作
=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...
- mongoose - 让node.js高效操作mongodb
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...
- geotrellis使用(五)使用scala操作Accumulo
要想搞明白Geotrellis的数据处理情况,首先要弄清楚数据的存放,Geotrellis将数据存放在Accumulo中. Accumulo是一个分布式的Key Value型NOSQL数据库,官网为( ...
- 【MongoDB for Java】Java操作MongoDB
上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...
- PHP操作MongoDB学习笔记
<?php/*** PHP操作MongoDB学习笔记*///*************************//** 连接MongoDB数据库 **////*************** ...
- PHP操作Mongodb之增删改查篇
之前,我讲解过PHP中mongodb扩展的安装,及启动,链接操作[忘记了?去看看吧!PHP操作Mongodb之一].本文主要就是讲在PHP中Mongodb的增加,查询,修改及删除数据的操作. 1.增加 ...
- PHP操作Mongodb之高级查询篇
本文主要讲解PHP中Mongodb的除了增删改查的一些其他操作. 在PHP操作Mongodb之增删改查篇中我们介绍了PHP中Mongodb的增加.删除.修改及查询数据的操作.本文主要是将查询时用到的高 ...
- php操作mongodb中的ISODate格式日期
mongodb 中数据记录的日期格式为"dateCreated" : ISODate("2011-12-20T07:22:50.836Z")经过翻阅php官网中 ...
随机推荐
- solr/solrj原子更新
lucene原子更新自己不用多介绍,但solr它的包装,下面是一个简单的介绍是:这个操作是用于索引非常有用. 详细在代码中使用例如以下: /** * 原子更新方式 * */ public static ...
- 走向DBA[MSSQL篇] 面试官最喜欢的问题 ----索引+C#面试题客串
原文:走向DBA[MSSQL篇] 面试官最喜欢的问题 ----索引+C#面试题客串 对大量数据进行查询时,可以应用到索引技术.索引是一种特殊类型的数据库对象,它保存着数据表中一列或者多列的排序结果,有 ...
- Oracle左连接、右连接、全外连接以及(+)号用法(转)
+:与附带的字段相连,和“+”相连的字段值,不管是否存在,都会展示 也就是带上相连接的字段 有数据了就显示,没数据就显示为null Oracle 外连接(OUTER JOIN) 左外连接(左边的表不 ...
- Spring面试问答Top 25
欢迎大家向我推荐你在面试过程中遇到关于Spring的问题. 我会把大家推荐的问题加入到以下的Spring经常使用面试题清单中供大家參考. 问题清单: 什么是Spring框架?Spring框架有哪些主要 ...
- [Tool]利用Advanced Installer建立x86/x64在一起的安装程式
原文 [Tool]利用Advanced Installer建立x86/x64在一起的安装程式 之前使用InstallShield做安装程式时,如果要将程式放在Program Files的话,需要分别针 ...
- 用脚本安装IIS
原文:用脚本安装IIS 基本命令:Sysocmgr.exe /i:sysoc.inf /u:c:/iis.txt c:/iis.txt是IIS要安装的组件列表 [Components]iis_comm ...
- cocos2d-x3.2中map的基本操作和使用
在游戏开发中,我们有时候会用到map,而map的使用方法我简单给大家介绍一下.Map是c++的一个标准容器,她提供了非常好一对一的关系,在一些程序中建立一个map能够起到事半功倍的效果,总结了一些ma ...
- U盘启动盘安装Win7/9/10系统攻略
UltraISO制作U盘启动盘安装Win7/9/10系统攻略 U盘安装好处就是不用使用笨拙的光盘,光盘还容易出现问题,无法读取的问题.U盘体积小,携带方便,随时都可以制作系统启动盘. U盘建议选择8G ...
- 数据库文档生成工具——word2chm,SqlSpec
首先使用代码生成器可以生成word版本的数据库文档. 转成chm格式的更加小巧和方便~ SqlSpec是个好工具,可以生成所有数据库相关的信息 之后可以一键生成chm文档.
- Saiku一个简短的引论
一个简短的引论 Saiku成立于2008年,通过Tom Barber和Paul Stoellberger研究. 最初叫Pentaho分析工具.最初是基于OLAP4J图书馆的使用GWT采用前端分析工具包 ...