scala连接mongodb_Scala对MongoDB的增删改查操作

本文详细介绍了使用Scala连接和操作MongoDB的步骤,包括无权限和权限验证连接,以及数据的添加、更新、查询和删除。特别强调了在Scala中使用MongoDB的Casbah库进行数据库操作的注意事项,如MongoClient的选择和数据插入的两种方式。
摘要由CSDN通过智能技术生成

===========================================

===========================================

依赖环境:jdk1.8、Scala 2.12、idea

mongodb Driver:3.1.1。注意,mongo for scala的驱动涉及多个jar(如下图),依赖于mongo-java-driver.jar

这里使用的sbt管理依赖,直接在build.sbt中添加依赖:libraryDependencies += "org.mongodb" %% "casbah" % "3.1.1"(强烈建议使用该方法添加依赖)

一、创建数据库连接

A:不需要用户名和密码直接获取MongoDB。

//无权限验证连接

def createDatabase(url: String, port: Int, dbName: String): MongoDB ={

MongoClient(url, port).getDB(dbName)

}

这里需要注意一下,在导入的jar包存在两个MongoClient类,一个来自于mongo-java-driver.jar的com.mongodb.MongoClient,另一个来自于casbah-core_2.12:3.1.1.jar的com.mongodb.casbah.MongoClient.前者是用于java调用,Scala使用后者!!!

因此导入包的时候要注意为:import com.mongodb.casbah.MongoClient

B:通过权限验证进行连接

//验证连接权限

def createDatabase(url: String, port: Int, dbName: String, loginName: String, password: String): MongoDB ={

var server= newServerAddress(url, port)//注意:MongoCredential中有6种创建连接方式,这里使用MONGODB_CR机制进行连接。如果选择错误则会发生权限验证失败

var credentials =MongoCredential.createCredential(loginName, dbName, password.toCharArray)

var mongoClient=MongoClient(server, List(credentials))

mongoClient.getDB(dbName)

}

这里需要注意的是MongoCredential.createCredential(),在MongoCredential中存在着六种认证机制,这里使用createCredential()进行创建,使用错误则将会验证失败

com.mongodb.MongoSecurityException: Exception authenticating

Caused by: com.mongodb.MongoCommandException: Command failed with error 18: 'auth failed' on server localhost:27017. The full response is { "ok" : 0.0, "errmsg" : "auth failed", "code" : 18, "codeName" : "AuthenticationFailed" }

该方法注释如下:

/**

* Creates a MongoCredential instance with an unspecified mechanism. The client will negotiate the best mechanism

* based on the version of the server that the client is authenticating to. If the server version is 2.8 or higher,

* the driver will authenticate using the SCRAM-SHA-1 mechanism. Otherwise, the driver will authenticate using the

* MONGODB_CR mechanism.

*

* @param userName the user name

* @param database the database where the user is defined

* @param password the user's password

*/

二、数据添加

def testInsert(): Unit ={for (i

collection.insert(MongoDBObject("name" -> "Jack%d".format(i), "email" -> "jack%d@sina.com".format(i), "age" -> i % 25, "birthDay" -> new SimpleDateFormat("yyyy-MM-dd").parse("2016-03-25")))

}

这里的collection是在下面创建的:

var collection= createDatabase("localhost", 27017, "mytest", "user", "123456").getCollection("user")

在进行数据插

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值