scala 操作mongodb

ScaNIV的头像 ScaNIV 0 2016-03-04 15:08 0

 基本信息

× 1    浏览数: 20638 分享时间: 2 年 前
介绍 Scala是一种函数式面向对象语言,它融汇了许多前所未有的特性,而同时又运行于JVM之上。随着开发者对Scala的兴趣日增,以及越来越多的工具支持,无疑Scala语言将成为你手上一件必不可少的工具 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。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,并选择简单的用户密码方式,如下: 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
还没有人评论,赶快来抢沙发吧!