使用Scala操做Mongodb

介紹html

Scala是一種功能性面嚮對象語言。它融匯了不少史無前例的特性。而同一時候又執行於JVM之上。隨着開發人員對Scala的興趣日增,以及愈來愈多的工具支持,無疑Scala語言將成爲你手上一件不可缺乏的工具git

MongoDB是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫其中功能最豐富,最像關係數據庫的。他支持的數據結構很鬆散,是相似jsonbson格式。所以可以存儲比較複雜的數據類型。github

Mongo最大的特色是他支持的查詢語言很強大,其語法有點相似於面向對象的查詢語言,差點兒可以實現相似關係數據庫單表查詢的絕大部分功能,而且還支持對數據創建索引mongodb

在本文中。咱們將介紹使用 Scala 語言怎樣與 Mongodb 進行鏈接與數據處理。shell

環境安裝與配置數據庫

第一。  安裝Mongodb和Scala,假設已經安裝。可以跳過這一步。詳細安裝步驟請自行搜索。express

第二。  安裝SBT。SBT是Scala中的構建工具。做用至關於Maven。apache

安裝比較簡單,詳細步驟請參考:http://www.scala-sbt.org/0.13/tutorial/zh-cn/Setup.htmljson

第三,  等安裝完畢後。在控制檯運行sbt命令,出現相似下面的信息就可以了:centos

[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

相關文章
相關標籤/搜索