介紹html
Scala是一種函數式面嚮對象語言,它融匯了許多史無前例的特性,而同時又運行於JVM之上。隨着開發者對Scala的興趣日增,以及愈來愈多的工具支持,無疑Scala語言將成爲你手上一件必不可少的工具。git
MongoDB是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。他支持的數據結構很是鬆散,是相似json的bson格式,所以能夠存儲比較複雜的數據類型。Mongo最大的特色是他支持的查詢語言很是強大,其語法有點相似於面向對象的查詢語言,幾乎能夠實現相似關係數據庫單表查詢的絕大部分功能,並且還支持對數據創建索引。github
在本文中,咱們將介紹使用 Scala語言如何與 Mongodb進行鏈接與數據處理。mongodb
環境安裝與配置shell
第一, 安裝Mongodb和Scala,若是已經安裝,能夠跳過這一步。具體安裝步驟請自行搜索。數據庫
第二, 安裝SBT,SBT是Scala中的構建工具,做用至關於Maven。安裝比較簡單,具體步驟請參考:http://www.scala-sbt.org/0.13/tutorial/zh-cn/Setup.htmlexpress
第三, 等安裝完成後,在控制檯執行sbt命令,出現相似如下的信息就能夠了:apache
[root@centos6 scala-project]# sbtjson
[info] Loading global plugins from /root/.sbt/0.13/pluginscentos
[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