Scala连接mongodb数据库
生活随笔
收集整理的這篇文章主要介紹了
Scala连接mongodb数据库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
mongodb是一種面向文檔的數據庫,Scala是一種函數式編程語言,由于項目的關系,需要使用Scala連接mongodb數據庫。下面介紹具體的方法。
就像Java連接MySQL數據庫需要JDBC一樣,Scala連接mongodb數據庫也需要一種中間件,這里使用casbah,這里給出了casbah的一些指導。
使用casbah需要下載casbah的jar包,由于已經在Intellij Idea搭建Spark開發環境中介紹了使用Idea+maven的搭建,這里不需要手動下載,使用maven的包管理工具自動加載說需要的依賴即可,其中,具體地依賴信息如下:
<dependency><groupID>org.mongodb</groupID><artifactID>casbah-core_2.10</artifactID><version>3.1.1</version> </dependency>其中version對應使用的版本號。這樣,maven就會自動下載所需要的依賴了。
在Scala程序中,要想使用casbah里面的類,需要添加如下的import:
import com.mongodb.casbah.Imports._首先,需要連接數據庫。在安裝mongodb的時候,默認的是使用的27017端口,下面是一些連接mongodb數據庫的實例: // 鏈接到默認主機(localhost)和默認端口號(27017) val mongoClient = MongoClient()// 連接到給定的主機“mongodb01”,使用默認的端口號27017 val mongoClient = MongoClient("mongodb01")// 連接到給定的主機“mongodb02”,并使用給定的端口號42017 val mongoClient = MongoClient("mongodb02", 42017)
還可以使用MongoDB URL連接數據庫: val uri = MongoClientURI("mongodb://localhost:27017/") val mongoClient = MongoClient(uri)
連接到數據庫后,就可以獲得具體的數據庫(db)和集合(collection)了。使用下面的代碼可以獲得指定的數據庫: val db = mongoClient("test")
這樣就獲得了“test”這個數據庫。然后就可以通過這個數據庫獲得集合: val coll = db("casbah")
獲得了“casbah”這個集合。如果數據庫中沒有這個集合,mongodb會創建這個集合。
得到集合后,就可以對這個集合進行增刪改查的操作了。casbah中使用MongoDBObject來創建一個文檔:
val a=MongoDBObject("x"->1) val b=MongoDBObject("x"->2)這樣就創建了兩個文檔。casbah中對集合的操作就像在mongodb的交互式腳本中對集合的操作一樣,比如使用insert進行插入操作: coll.insert( a ) coll.insert( b )
這樣就將剛才創建的兩個文檔插入數據庫中了。
同樣可以使用count和find進行讀取:
val n=coll.count() val allDocs=coll.find()下面是一個簡單的例子: package com.liu/*** Created by hadoop on 16-4-1.*/ import com.mongodb.casbah.Imports._ object CasbahDemo {def main(args:Array[String]): Unit ={val mongoClient=MongoClient("localhost",27017)val db=mongoClient("test")val coll=db("casbah")val a=MongoDBObject("x"->1)val b=MongoDBObject("x"->2)coll.insert(a)coll.insert(b)val allDocs=coll.find()allDocs.foreach(println)} }
這段代碼僅僅是上面介紹的羅列。運行結果如下:
同時,在一個終端連接到mongodb,使用交互式腳本進行查詢,結果如下:
可見,Scala中操縱mongodb已經成功了。
下面介紹Scala操縱mongodb的刪改操作。
就像交互式腳本一樣,casbah也可以使用文檔作為查詢條件,比如這樣:
val c=MongoDBObject("x"->2) val d=coll.find(c)同理,對于修改操作,也是這樣: val e=MongoDBObject("x"->3) coll.update(a,e)第一個參數是查詢條件,第二個參數是更新的文檔,這樣,原來的a就編程現在的e了。在mongodb中,使用$set表示只進行更新操作,而不替換原來的內容。在casbah中,也可以使用$set:
val f=$set("y"->1) coll.update(e,f)這樣,就將原來的{"x":3}變為現在的{"x":3,"y":1}。對于刪除操作也是同理:
coll.remove(f)就會刪除符合f這個條件的文檔。總結
以上是生活随笔為你收集整理的Scala连接mongodb数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成都欢乐谷水上项目有哪些
- 下一篇: Java集合(一):Java集合概述