使用Scala操作Mongodb,scala操作mongodb
使用Scala操作Mongodb,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命令,出现类似以下的信息就可以了:
[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,并选择简单的用户密码方式,如下:
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
本文主要讲述如何使用Java操作MongoDB以及了解MongoDB如何进行日常的数据库操作。 文章内容如下: 第一步:安 NoSQL数据库因其可扩展性使其变得越来越流行,利用NoSQL数据库可以给你带来更多的好处,MongoDB是一个用C++编写的可度可扩展性的开源NoSQL数据库。本文主要讲述如何使用Java操作MongoDB以及了解MongoDB如何进行日常的数据库操作。文章内容如下:第一步:安装MongoDB无需太多的繁杂步骤,你只要在MongoDB官方网站查看安装说明,根据自己的操作系统进行选择适应的版本即可。第二步:启动MongoDB服务器这一步也很简单。运行mongod.exe文件里的bin文件夹(我使用的是Windows OS系统),并启动MongoDB服务器。在默认的情况下服务器将启动端口27017,你需要在安装过程中创建将数据存储在/data/db目录里。第三步:启动MongoDB shell指令你可以通过运行mongo.exe文件来启动MongoBD shell。第四步:利用MongoDB创建数据库利用MongoDB在MongoDB shell中输入以下内容建立一个名为“company”的数据库。双击代码全选 1
use company 记住,除非你在MangoDB里保存了一些东西,否则它不会自动为你保存。使用下面的命令帮你查看可用的数据库,它会显示“company”尚未被创建。双击代码全选 1
show dbs; 第五步:在MongoDB中保存数据使用下面的命令来保存employee 数据代表一个collection,将其命名为employees。双击代码全选 1
employee = {name : "A", no : 1}
db.employees.save(employee) 通过使用下面的命令来查看collection里的数据。双击代码全选 1
db.users.find(); 如何使用Java操作MongoDB?下面是是一段简单的Java代码,你可以在这里获得mongo-java驱动。很简单,只需要使用下面的代码,重复上面的操作即可。双击代码全选 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49packagecom.eviac.blog.mongo; importjava.net.UnknownHostException; importcom.mongodb.BasicDBObject; importcom.mongodb.DB; importcom.mongodb.DBCollection; importcom.mongodb.DBCursor; importcom.mongodb.Mongo; importcom.mongodb.MongoException; publicclassMongoDBClient { publicstaticvoidmain(String[] args) { try{ Mongo mongo = newMongo("localhost", 27017); DB db = mongo.getDB("company"); DBCollecti......余下全文>>
本文主要讲述如何使用Java操作MongoDB以及了解MongoDB如何进行日常的数据库操作。文章内容如下:第一步:安装MongoDB无需太多的繁杂步骤,你只要在MongoDB官方网站查看安装说明,根据自己的操作系统进行选择适应的版本即可。第二步:启动MongoDB服务器这一步也很简单。运行mongod.exe文件里的bin文件夹(我使用的是Windows OS系统),并启动MongoDB服务器。在默认的情况下服务器将启动端口27017,你需要在安装过程中创建将数据存储在/data/db目录里。第三步:启动MongoDB shell指令你可以通过运行mongo.exe文件来启动MongoBD shell。第四步:利用MongoDB创建数据库利用MongoDB在MongoDB shell中输入以下内容建立一个名为“company”的数据库。use company 记住,除非你在MangoDB里保存了一些东西,否则它不会自动为你保存。使用下面的命令帮你查看可用的数据库,它会显示“company”尚未被创建。show dbs; 第五步:在MongoDB中保存数据使用下面的命令来保存employee 数据代表一个collection,将其命名为employees。employee = {name : "A", no : 1} db.employees.save(employee) 通过使用下面的命令来查看collection里的数据。db.users.find(); 如何使用Java操作MongoDB?下面是是一段简单的Java代码,你可以在这里获得mongo-java驱动。很简单,只需要使用下面的代码,重复上面的操作即可。package com.eviac.blog.mongo; import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.Mongo; import com.mongodb.MongoException; public class MongoDBClient { public static void main(String[] args) { try { Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("company"); DBCollection collection = db.getCollection("employees"); BasicDBObject employee = new BasicDBObject(); employee.put("name", "Hannah"); employee.put("no", 2); collection.insert(employee); BasicDBObject searchEmployee = new BasicDBObject(); searchEmployee.put("no", 2); DBCursor cursor = colle......余下全文>>
评论暂时关闭