使用Scala操作Mongodb

介绍

Scala是一种函数式面向对象语言,它融汇了许多前所未有的特性,而同时又运行于JVM之上。随着开发者对Scala的兴趣日增,以及越来越多的工具支持,无疑Scala语言将成为你手上一件必不可少的工具。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

在本文中,我们将介绍使用 Scala
语言如何与 Mongodb
进行连接与数据处理。

环境安装与配置

第一,  安装Mongodb和Scala,如果已经安装,可以跳过这一步。具体安装步骤请自行搜索。

第二,  安装SBT,SBT是Scala中的构建工具,作用相当于Maven。安装比较简单,具体步骤请参考:http://www.scala-sbt.org/0.13/tutorial/zh-cn/Setup.html

第三,  等安装完成后,在控制台执行sbt命令,出现类似以下的信息就可以了:

[[email protected] 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 = [email protected]

获取数据库和连接:

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"->"[email protected]")

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

时间: 2024-09-30 18:46:51

使用Scala操作Mongodb的相关文章

Scala操作MongoDB

Scala操作MongoDB // Maven <dependencies> <dependency> <groupId>org.mongodb</groupId> <artifactId>casbah</artifactId> <version>3.1.1</version> </dependency> </dependencies> // Sbt libraryDependencie

Scala对MongoDB的增删改查操作

=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! =========================================== 依赖环境:jdk1.8.Scala 2.12.idea mongodb Driver:3.1.1.注意,mongo for scala的驱动涉及多个jar(如下图),依赖于mongo-java-driver.jar 这里使用的sbt管理依赖,直接在bu

Ruby操作MongoDB(进阶)-CRUD操作

MongDB数据库的使用离不开CRUD操作.什么是CRUD,就是创建文档,读取文档信息,更新文档和删除文档. key-value键值对标记 在MongoDB的Ruby驱动中,Key_value键值多次出现.而且有时会出现语法上的巧合,这取决于在使用的Ruby版本中如何申明. 在文档创建步骤中,1.9及之后版本支持以下语法: document={name:"Tom",age:20}. 但是如果你使用的是2.2或者更高的版本,你可以用双引号将你的key包起来.如: document={&q

PHP操作MongoDB技术总结

<?php /** * PHP操作MongoDB学习笔记 */ //************************* //** 连接MongoDB数据库 **// //************************* //格式=>("mongodb://用户名:密码 @地址:端口/默认指定数据库",参数) $conn = new Mongo(); //可以简写为 //$conn=new Mongo(); #连接本地主机,默认端口. //$conn=new Mongo(&

node操作MongoDB数据库之插入

在上一篇中我们介绍了MongoDB的安装与配置,接下来的我们来看看在node中怎样操作MongoDB数据库. 在操作数据库之前,首先应该像关系型数据库一样建个数据库把... 启动数据库 利用命令提示符: 1.在创建数据库之前,我们应该启动数据库服务器 mongod --dbpath d:\MongoDB\data 注意:不要关闭这个数据库服务器...不然数据库就被关闭了 2.使用如下语句创建一个数据库 use mydb 这样mongodb会帮助我们自动创建他们,当然这个时候数据库还是空的. 3.

学习MongoDB--(11):应用举例(利用java操作MongoDB)

原文地址:http://blog.csdn.net/drifterj/article/details/7948090 目录地址:http://blog.csdn.net/DrifterJ/article/category/1191327/2 前面我们都是通过shell来操作存取MongoDB的数据,shell中使用的语言就是javascript.我们这次说一下如何通过Java来访问操作MongoDB数据库的. Java驱动程序是MongoDB最早的驱动,已用于生产环境很长时间,十分稳定.可以到M

【转】PHP操作MongoDB GridFS 存储文件

PHP操作MongoDB GridFS 存储文件,如图片文件 GridFS是MongoDB的一个内置功能,它提供一组文件操作的API以利用MongoDB存储文件,GridFS的基本原理是将文件保存在两个Collection中,一个保存文件索引,一个保存文件内容,文件内容按一定大小分成若干块,每一块存在一个Document中,这种方法不仅提供了文件存储,还提供了对文件相关的一些附加属性(比如MD5值,文件名等等)的存储.

PHP操作Mongodb之增删改查篇

之前,我讲解过PHP中mongodb扩展的安装,及启动,链接操作[忘记了?去看看吧!PHP操作Mongodb之一].本文主要就是讲在PHP中Mongodb的增加,查询,修改及删除数据的操作. 1.增加数据 语法格式: $db->insert($array);  //参数表示需要插入的数据 例如:我们插入一个id为1,名称为PHP,年龄为25的数据.代码如下: <?php //连接数据库 $connnect = new Mongo("mongodb://127.0.0.1:27017&

java操作mongoDB实现CURD

java操作mongoDB mongoDB作为一个牛气哄哄的nosql内存数据库,的确有很多优点,对于大数据量.高并发.弱事务的互联网应用,MongoDB可以应对自如.接触到mongoDB 参考了下api实现了增删改查.mongoDB 是面向对象设计,不用写sql语句 直接操作api 方法 就可以实现,这会儿数据库语句写不好的娃娃们有福了.直接贴码: DataTest.java package com.zk.db; import java.net.UnknownHostException; im