介绍

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的更多相关文章

  1. Scala操作MongoDB

    Scala操作MongoDB // Maven <dependencies> <dependency> <groupId>org.mongodb</group ...

  2. Scala对MongoDB的增删改查操作

    =========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...

  3. mongoose - 让node.js高效操作mongodb

    Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...

  4. geotrellis使用(五)使用scala操作Accumulo

    要想搞明白Geotrellis的数据处理情况,首先要弄清楚数据的存放,Geotrellis将数据存放在Accumulo中. Accumulo是一个分布式的Key Value型NOSQL数据库,官网为( ...

  5. 【MongoDB for Java】Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...

  6. PHP操作MongoDB学习笔记

    <?php/*** PHP操作MongoDB学习笔记*///*************************//**   连接MongoDB数据库  **////*************** ...

  7. PHP操作Mongodb之增删改查篇

    之前,我讲解过PHP中mongodb扩展的安装,及启动,链接操作[忘记了?去看看吧!PHP操作Mongodb之一].本文主要就是讲在PHP中Mongodb的增加,查询,修改及删除数据的操作. 1.增加 ...

  8. PHP操作Mongodb之高级查询篇

    本文主要讲解PHP中Mongodb的除了增删改查的一些其他操作. 在PHP操作Mongodb之增删改查篇中我们介绍了PHP中Mongodb的增加.删除.修改及查询数据的操作.本文主要是将查询时用到的高 ...

  9. php操作mongodb中的ISODate格式日期

    mongodb 中数据记录的日期格式为"dateCreated" : ISODate("2011-12-20T07:22:50.836Z")经过翻阅php官网中 ...

随机推荐

  1. 看你的门-攻击服务器(4)-HTTP参数注入攻击

    首先需要声明.这纯粹是没有远见和有点真才实学开发一个愚蠢的观点,只为web参考系统安全. 1.HTTP参数注入攻击 參数,被用做后端HTTP请求中的參数,这个时候就有可能会导致HTTP參数注入. 一个 ...

  2. 移动端 微信 网易 触屏滑动回弹菜单(css版)

    总结一下: 有点:网易新闻,微信 热文 都是 -webkit-overflow-scrolling: touch;实现,css实现,轻巧: bug: 部分安卓浏览器(uc,自带)  只支持持续滑动,不 ...

  3. Scut游戏server引擎Unity3d访问

    Scut提供Unity3d Sdk包.便利的高速发展和Scut游戏server对接: 看Unity3d示为以下的比率: 启动Unity3d项目 打开Scutc.svn\SDK\Unity3d\Asse ...

  4. NSIS:应用软件自动升级功能的探索与实践

    原文 NSIS:应用软件自动升级功能的探索与实践 记得以前轻狂曾分享过使用第三方软件实现应用软件自动升级功能 (详细http://www.flighty.cn/html/soft/20110106_1 ...

  5. Advanced Installer 9.8打包实录

    原文 Advanced Installer 9.8打包实录 主要介绍:(1)创建工程,(2)创建快捷方式及其图标(3)卸载设置 创建工程(.net为例): 工程创建完成....接下来进行简单设置 开始 ...

  6. openWRT自学---自己编译的第一个 backfire10.03 版本的过程记录(转)

    基于 backfire10.03(从http://downloads.openwrt.org/backfire/10.03/ 中下砸的源码包backfire_10.03_source.tar.bz2: ...

  7. Hybrid----U采用IWebView演出PDF和其他文件

    App如果你需要显示pdf.word档,在这个时候有没有其他控制,比UIWebView更适合,这是高度抽象的技术细节,可以非常easy采用 UIWebView打开文件类型列表 watermark/2/ ...

  8. IE8升级新版Flash Player ActiveX14导致的discuz图片附件无法上传 解决方法

    架不住sb adobe的频繁升级提示,手欠升级到了了flash player 14,结果IE8下全部discuz论坛中都无法看到上传图片的button了 没办法,遇到问题就解决吧 刚好在解决IE11遇 ...

  9. Qt Quick 组件和动态创建的对象具体的解释

    在<Qt Quick 事件处理之信号与槽>一文中介绍自己定义信号时,举了一个简单的样例.定义了一个颜色选择组件,当用户在组建内点击鼠标时,该组件会发出一个携带颜色值的信号,当时我使用 Co ...

  10. C# 带用户密码访问网络共享

    原文:C# 带用户密码访问网络共享 调用WNetUseConnection API 函数详细参数参考:https://msdn.microsoft.com/en-us/library/windows/ ...