同Mysql、Oracle一样,首先要下载驱动包,下载地址。
打开myeclipse,创建一个java project。
在项目下建立一个lib文件夹,将下载的驱动包放到lib下并build到path下:
然后在src下建一个db.properties文件
host=127.0.0.1port=27017dbname=test
新建一个util包,包下新建一个类DBUtil
package util;import java.io.IOException;import java.net.UnknownHostException;import java.util.Properties;import com.mongodb.DBCollection;import com.mongodb.DBObject;import com.mongodb.MongoClient;import com.mongodb.util.JSON;public class DBUtil {private static Properties p=new Properties();private static String host;private static int port;private static String dbname;static{try {p.load(DBUtil.class.getClassLoader().getResourceAsStream("db.properties"));host=(String) p.get("host");port=Integer.valueOf((String) p.get("port"));dbname=(String) p.get("dbname");} catch (IOException e) {e.printStackTrace();}}public static DBCollection getDBCollection(String tablename){try { return new MongoClient(host,port).getDB(dbname).getCollection(tablename);} catch (UnknownHostException e) {e.printStackTrace();}return null;}public static DBObject getDBCursorFromJson(String jsondata){return (DBObject) JSON.parse(jsondata);}public static String getStringDataFromDBObject(DBObject entry){return JSON.serialize(entry);}}
下面测试简单的CRUD
package testmongodb;import org.bson.types.ObjectId;import util.DBUtil;import com.mongodb.BasicDBObject;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.DBObject;public class Test {@org.junit.Testpublic void testAdd(){DBCollection collection=DBUtil.getDBCollection("testtable");DBObject user=new BasicDBObject();user.put("name", "zhangsan");user.put("age", 11);collection.insert(user).getN();}@org.junit.Testpublic void testfind(){//mongoDB不支持联合查询、子查询,这需要我们自己在程序中完成。将查询的结果集在Java查询中进行需要的过滤即可。DBCollection collection=DBUtil.getDBCollection("testtable");DBObject user=new BasicDBObject();user.put("name", "zhangsan");user.put("age", "11");//全部查询//DBCursor cursor=collection.find();//条件查询DBCursor cursor=collection.find(new BasicDBObject("age", new BasicDBObject("$lte", 105)));while (cursor.hasNext()) {System.out.println(cursor.next());}}@org.junit.Testpublic void testDelete(){DBCollection collection=DBUtil.getDBCollection("testtable");//根据id删除collection.remove(new BasicDBObject("_id", new ObjectId("5590e57b7d51ad2ef1b69a93")));//条件删除collection.remove(new BasicDBObject("age", new BasicDBObject("$gte", 105)));}@org.junit.Testpublic void testUpdate(){DBCollection collection=DBUtil.getDBCollection("testtable");//根据id修改collection.update(new BasicDBObject("_id", new ObjectId("5590e57b7d51ad2ef1b69a93")), new BasicDBObject("age", 99));//条件修改collection.update(new BasicDBObject("age", new BasicDBObject("$gte", 105)), new BasicDBObject("age", 11));}}
关于聚合可以看这篇文章,文章地址
关于索引可以看这篇文章,文章地址
最后多嘴一句,MongoDB使用面向对方的方式处理数据库,让开发者不用再去关心sql问题,但也同样限制了他所能处理的业务,对于复杂的数据分析或者关系比较复杂的erp等,不太适合。不过有一种折中的办法就是对于要做复杂分析的表依然使用传统的数据库,而对于简单的则用MongoDB。
MongoDB Java环境下的开发
标签:
小编还为您整理了以下内容,可能对您也有帮助:
Java语言中有哪些必备的开发工具?
想要成为Java技术大牛并不容易,技术大牛不仅需要具备扎实的开发技能,还需要掌握开发工具和框架的使用,在开发中,工具的选择和使用是非常重要的,工具的功能不同使用的情况也不同。下面电脑培训为大家具体介绍Java软件开发必备的开发工具。
1、MongoDB
MongoDB是使用非常广泛的工具,具有跨平台和面向文档数据库等优势,是现在使用最多的一种数据库。在使用过程中,有灵活的文档模型、高可用复制集、可扩展分片集群,还能进行实时监控等相关操作。IT培训认为内存使用和页面错误,复制集等与MongoDB的阴影是密不可分。
2、Elasticsearch
Elasticsearch主要是云构建分布式RESTful的搜索引擎,但是Elasticsearch不仅仅是一个全文本的搜索引擎,还是一个具有分布式实时文档存储,里面的每个数据都可以被搜索。在使用过程中,还具有分布式搜索引擎、分析引擎等实时分析功能。
3、Cassandra
Cassandra属于开源分布式数据库管理系统,Cassandra主要是使用Java编程语言进行编写的,所以在JDK6以上的版本都是可以进行使用的,使用的操作命令和平时使用的一些数据库相似。回龙观北大青鸟认为只要是熟悉其他数据库的知识,使用Cassandra是非常容易的。
4、Redis
Redis可以进行内存数据结构存储,Redis有很多其他工具所不具备的优势,不仅可以在内存中保存数据库内容,并且所使用的磁盘具有持久性。Redis的数据类型比许多键值数据存储系统更丰富,另一个优点是Redis可以将数据复制到任何数字。
5、Hadoop
Hadoop是进行Java编写的软件框架,主要使用在分布式存储。对于非常大的数据,用户可以在不知道分布式基础的情况下进行开发分布式程序,并且能够使用集群实现高速计算和存储。在使用过程中,北大青鸟回龙观计算机学院认为Hadoop还能实现分布式文件系统,能够对大量的数据进行存储。
如何用Java操作MongoDB
HelloWorld程序
学习任何程序的第一步,都是编写HelloWorld程序,我们也不例外,看下如何通过Java编写一个HelloWorld的程序。
首先,要通过Java操作Mongodb,必须先下载Mongodb的Java驱动程序,可以在这里下载。
新建立一个Java工程,将下载的驱动程序放在库文件路径下,程序代码如下:
package com.mkyong.core;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;
/**
* Java + MongoDB Hello world Example
*
*/
public class App {
public static void main(String[] args) {
try {
//实例化Mongo对象,连接27017端口
Mongo mongo = new Mongo("localhost", 27017);
//连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
DB db = mongo.getDB("yourdb");
// Get collection from MongoDB, database named "yourDB"
//从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立
DBCollection collection = db.getCollection("yourCollection");
// 使用BasicDBObject对象创建一个mongodb的document,并给予赋值。
BasicDBObject document = new BasicDBObject();
document.put("id", 1001);
document.put("msg", "hello world mongoDB in Java");
//将新建立的document保存到collection中去
collection.insert(document);
// 创建要查询的document
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("id", 1001);
// 使用collection的find方法查找document
DBCursor cursor = collection.find(searchQuery);
//循环输出结果
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
System.out.println("Done");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
}
}
最后,输出的结果为:
{ "_id" : { "$oid" : "4dbe5596dceace565d229dc3"} ,"id" : 1001 , "msg" : "hello world mongoDB in Java"}
Done
在上面的例子中,演示了使用Java对Mongodb操作的重要方法和步骤,首先通过创建Mongodb对象,传入构造函数的参数是Mongodb的数据库所在地址和端口,然后使用
getDB方法获得要连接的数据库名,使用getCollection获得数据集合的名,然后通过新建立BasicDBObject对象去建立document,最后通过collection的insert方法,将建立的document保存到数据库中去。而collection的find方法,则是用来在数据库中查找document。
从Mongodb中获得collection数据集
在Mongodb中,可以通过如下方法获得数据库中的collection:
DBCollection collection = db.getCollection("yourCollection");如果你不知道collection的名称,可以使用db.getCollectionNames()获得集合,然后再遍历,如下:
DB db = mongo.getDB("yourdb");Set collections = db.getCollectionNames();
for(String collectionName : collections){
System.out.println(collectionName);
}
完成的一个例子如下:
package com.mkyong.core;import java.net.UnknownHostException;
import java.util.Set;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
/**
* Java : Get collection from MongoDB
*
*/
public class GetCollectionApp {
public static void main(String[] args) {
try {
Mongo mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("yourdb");
Set<String> collections = db.getCollectionNames();
for (String collectionName : collections) {
System.out.println(collectionName);
}
DBCollection collection = db.getCollection("yourCollection");
System.out.println(collection.toString());
System.out.println("Done");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
}
}
Mongodb中如何插入数据
下面,讲解下如何使用4种方式,将JSON数据插入到Mongodb中去。首先我们准备JSON
格式的数据,如下:
{"database" : "mkyongDB",
"table" : "hosting",
"detail" :
{
records : 99,
index : "vps_index1",
active : "true"
}
}
}
我们希望用不同的方式,通过JAVA代码向Mongodb插入以上格式的JSON数据
第一种方法,是使用BasicDBObject,方法如下代码所示:
BasicDBObject document = new BasicDBObject();document.put("database", "mkyongDB");
document.put("table", "hosting");
BasicDBObject documentDetail = new BasicDBObject();
documentDetail.put("records", "99");
documentDetail.put("index", "vps_index1");
documentDetail.put("active", "true");
document.put("detail", documentDetail);
collection.insert(document);
第二种方法是使用BasicDBObjectBuilder对象,如下代码所示:
BasicDBObjectBuilder documentBuilder = BasicDBObjectBuilder.start().add("database", "mkyongDB")
.add("table", "hosting");
BasicDBObjectBuilder documentBuilderDetail = BasicDBObjectBuilder.start()
.add("records", "99")
.add("index", "vps_index1")
.add("active", "true");
documentBuilder.add("detail", documentBuilderDetail.get());
collection.insert(documentBuilder.get());
第三种方法是使用Map对象,代码如下:
Map documentMap =new HashMap();documentMap.put("database", "mkyongDB");
documentMap.put("table", "hosting");
Map documentMapDetail =new HashMap();
documentMapDetail.put("records", "99");
documentMapDetail.put("index", "vps_index1");
documentMapDetail.put("active", "true");
documentMap.put("detail", documentMapDetail);
collection.insert(new BasicDBObject(documentMap));
第四种方法,也就是最简单的,即直接插入JSON格式数据
String json ="{'database' : 'mkyongDB','table' : 'hosting',"+
"'detail' : {'records' : 99, 'index' : 'vps_index1', 'active' : 'true'}}}";
DBObject dbObject =(DBObject)JSON.parse(json);
collection.insert(dbObject);
这里使用了JSON的parse方法,将解析后的JSON字符串转变为DBObject对象后再直接插入到collection中去。
完整的代码如下所示:
packagecom.mkyong.core;
importjava.net.UnknownHostException;
importjava.util.HashMap;
importjava.util.Map;
importcom.mongodb.BasicDBObject;
importcom.mongodb.BasicDBObjectBuilder;
importcom.mongodb.DB;
importcom.mongodb.DBCollection;
importcom.mongodb.DBCursor;
importcom.mongodb.DBObject;
importcom.mongodb.Mongo;
importcom.mongodb.MongoException;
importcom.mongodb.util.JSON;
/**
* Java MongoDB : Insert a Document
*
*/
publicclass InsertDocumentApp {
publicstaticvoid main(String[] args){
try{
Mongo mongo =new Mongo("localhost", 27017);
DB db = mongo.getDB("yourdb");
// get a single collection
DBCollection collection = db.getCollection("mmyColl");
// BasicDBObject example
System.out.println("BasicDBObject example...");
BasicDBObject document =new BasicDBObject();
document.put("database", "mkyongDB");
document.put("table", "hosting");
BasicDBObject documentDetail =new BasicDBObject();
documentDetail.put("records", "99");
documentDetail.put("index", "vps_index1");
documentDetail.put("active", "true");
document.put("detail", documentDetail);
collection.insert(document);
DBCursor cursorDoc = collection.find();
while(cursorDoc.hasNext()){
System.out.println(cursorDoc.next());
}
collection.remove(new BasicDBObject());
// BasicDBObjectBuilder example
System.out.println("BasicDBObjectBuilder example...");
BasicDBObjectBuilder documentBuilder = BasicDBObjectBuilder.start()
.add("database", "mkyongDB")
.add("table", "hosting");
BasicDBObjectBuilder documentBuilderDetail = BasicDBObjectBuilder.start()
.add("records", "99")
.add("index", "vps_index1")
.add("active", "true");
documentBuilder.add("detail", documentBuilderDetail.get());
collection.insert(documentBuilder.get());
DBCursor cursorDocBuilder = collection.find();
while(cursorDocBuilder.hasNext()){
System.out.println(cursorDocBuilder.next());
}
collection.remove(new BasicDBObject());
// Map example
System.out.println("Map example...");
Map documentMap =new HashMap();
documentMap.put("database", "mkyongDB");
documentMap.put("table", "hosting");
Map documentMapDetail =new HashMap();
documentMapDetail.put("records", "99");
documentMapDetail.put("index", "vps_index1");
documentMapDetail.put("active", "true");
documentMap.put("detail", documentMapDetail);
collection.insert(new BasicDBObject(documentMap));
DBCursor cursorDocMap = collection.find();
while(cursorDocMap.hasNext()){
System.out.println(cursorDocMap.next());
}
collection.remove(new BasicDBObject());
// JSON parse example
System.out.println("JSON parse example...");
String json ="{'database' : 'mkyongDB','table' : 'hosting',"+
"'detail' : {'records' : 99, 'index' : 'vps_index1', 'active' : 'true'}}}";
DBObject dbObject =(DBObject)JSON.parse(json);
collection.insert(dbObject);
DBCursor cursorDocJSON = collection.find();
while(cursorDocJSON.hasNext()){
System.out.println(cursorDocJSON.next());
}
collection.remove(new BasicDBObject());
}catch(UnknownHostException e){
e.printStackTrace();
}catch(MongoException e){
e.printStackTrace();
}
}
}
如何用Java操作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}
2.db.employees.save(employee)
通过使用下面的命令来查看collection里的数据。
1.db.users.find();
如何使用Java操作MongoDB?
下面是是一段简单的Java代码,你可以在这里获得mongo-java驱动。很简单,只需要使用下面的代码,重复上面的操作即可。
1.package com.eviac.blog.mongo;
2.
3.import java.net.UnknownHostException;
4.
5.import com.mongodb.BasicDBObject;
6.import com.mongodb.DB;
7.import com.mongodb.DBCollection;
8.import com.mongodb.DBCursor;
9.import com.mongodb.Mongo;
10.import com.mongodb.MongoException;
11.
12.public class MongoDBClient {
13.
14. public static void main(String[] args) {
15.
16. try {
17.
18. Mongo mongo = new Mongo(“localhost”, 27017);
19.
20. DB db = mongo.getDB(“company”);
21.
22. DBCollection collection = db.getCollection(“employees”);
23.
24. BasicDBObject employee = new BasicDBObject();
25. employee.put(“name”, “Hannah”);
26. employee.put(“no”, 2);
27.
28. collection.insert(employee);
29.
30. BasicDBObject searchEmployee = new BasicDBObject();
31. searchEmployee.put(“no”, 2);
32.
33. DBCursor cursor = collection.find(searchEmployee);
34.
35. while (cursor.hasNext()) {
36. System.out.println(cursor.next());
37. }
38.
39. System.out.println(“The Search Query has Executed!”);
40.
41. } catch (UnknownHostException e) {
42. e.printStackTrace();
43. } catch (MongoException e) {
44. e.printStackTrace();
45. }
46.
47. }
48.
49.}
结果如下:
1.{ “_id” : { “$oid” : “4fec74dc907cbe9445fd2d70”} , “name” : “Hannah” , “no” : 2}
2.The Search Query has Executed!
小结:
随着互联网Web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展也非常迅速。本文浅显的谈及了如何使用Java操作MongoDB以及了解MongoDB如何进行日常的数据库操作的问题。
java怎么连接mangodb?需要哪些步骤?
mongodb官网下载 选择window版本
注意安装目录,我的安装目录是D:Program Files (x86)MongoDB
打开cmd窗口输入然后回车:D:
输入然后回车:cd D:Program Files (x86)MongoDBServer3.0in
继续:mongod -dbpath "D:Program Files (x86)MongoDBServer3.0datadb"
注意:这里是指定数据存放的目录,mongodb的默认端口号是27017,在浏览器输入127.0.0.1:27017有提示则说明启动成功,关闭cmd窗口会退出程序
新打开一个cmd窗口输入然后回车:D:
输入然后回车:cd D:Program Files (x86)MongoDBServer3.0in
输入然后回车:mongo
这就是数据库的命令行界面,
输入exit或者ctrl+C可退出。
当mongod.exe被关闭时,mongo.exe 就无法连接到数据库了,因此每次想使用mongodb数据库都要开启mongod.exe程序,所以比较麻烦,我们安装为window服务
package test1;import java.util.Date;import java.util.Set;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.Mongo;public class ConnectionTest {/** * @param args */public static void main(String[] args) {Mongo mongo = new Mongo("localhost", 27017);// 连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立DB db = mongo.getDB("mytest");// 遍历所有集合的名字Set<String> colls = db.getCollectionNames();System.out.println("所有集合:");for (String s : colls) {System.out.println(s);}System.out.println("测试开始");// 从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立DBCollection collection = db.getCollection("yourCollection");search(collection);System.out.println("Done");}public static void insert(DBCollection collection){System.out.println("插入");// 使用BasicDBObject对象创建一个mongodb的document,并给予赋值。BasicDBObject document = new BasicDBObject();document.put("id", 1001);document.put("msg", "hello world mongoDB in Java");// 将新建立的document保存到collection中去collection.insert(document);}public static void delete(DBCollection collection){System.out.println("删除");BasicDBObject query = new BasicDBObject();query.put("id", 1001);collection.remove(query);}public static void update(DBCollection collection){System.out.println("更新");BasicDBObject update = new BasicDBObject();update.put("id", 1002);update.put("time",new Date());collection.update(new BasicDBObject().append("id", 1001), update);}public static void search(DBCollection collection){System.out.println("查询");// 创建要查询的documentBasicDBObject searchQuery = new BasicDBObject();searchQuery.put("id", 1001);// 使用collection的find方法查找documentDBCursor cursor = collection.find();// 循环输出结果while (cursor.hasNext()) {System.out.println(cursor.next());}}}
版权声明:本文为博主原创文章,未经博主允许不得转载。
mongodb的安装(window)及java连接测试
标签:
java怎么连接mangodb?需要哪些步骤?
mongodb官网下载 选择window版本
注意安装目录,我的安装目录是D:Program Files (x86)MongoDB
打开cmd窗口输入然后回车:D:
输入然后回车:cd D:Program Files (x86)MongoDBServer3.0in
继续:mongod -dbpath "D:Program Files (x86)MongoDBServer3.0datadb"
注意:这里是指定数据存放的目录,mongodb的默认端口号是27017,在浏览器输入127.0.0.1:27017有提示则说明启动成功,关闭cmd窗口会退出程序
新打开一个cmd窗口输入然后回车:D:
输入然后回车:cd D:Program Files (x86)MongoDBServer3.0in
输入然后回车:mongo
这就是数据库的命令行界面,
输入exit或者ctrl+C可退出。
当mongod.exe被关闭时,mongo.exe 就无法连接到数据库了,因此每次想使用mongodb数据库都要开启mongod.exe程序,所以比较麻烦,我们安装为window服务
package test1;import java.util.Date;import java.util.Set;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.Mongo;public class ConnectionTest {/** * @param args */public static void main(String[] args) {Mongo mongo = new Mongo("localhost", 27017);// 连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立DB db = mongo.getDB("mytest");// 遍历所有集合的名字Set<String> colls = db.getCollectionNames();System.out.println("所有集合:");for (String s : colls) {System.out.println(s);}System.out.println("测试开始");// 从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立DBCollection collection = db.getCollection("yourCollection");search(collection);System.out.println("Done");}public static void insert(DBCollection collection){System.out.println("插入");// 使用BasicDBObject对象创建一个mongodb的document,并给予赋值。BasicDBObject document = new BasicDBObject();document.put("id", 1001);document.put("msg", "hello world mongoDB in Java");// 将新建立的document保存到collection中去collection.insert(document);}public static void delete(DBCollection collection){System.out.println("删除");BasicDBObject query = new BasicDBObject();query.put("id", 1001);collection.remove(query);}public static void update(DBCollection collection){System.out.println("更新");BasicDBObject update = new BasicDBObject();update.put("id", 1002);update.put("time",new Date());collection.update(new BasicDBObject().append("id", 1001), update);}public static void search(DBCollection collection){System.out.println("查询");// 创建要查询的documentBasicDBObject searchQuery = new BasicDBObject();searchQuery.put("id", 1001);// 使用collection的find方法查找documentDBCursor cursor = collection.find();// 循环输出结果while (cursor.hasNext()) {System.out.println(cursor.next());}}}
版权声明:本文为博主原创文章,未经博主允许不得转载。
mongodb的安装(window)及java连接测试
标签:
如何在java中使用mongodb
这段时间尝试了一下MongoDB,感觉十分易用,方便,相比关系型的数据库来说优势也很大,于是尝试了下使用java连接MongoDB,并进行了
基本的增删改查操作。
首先先在控制台中连接数据库,查看数据库有几个表。
现在,新建一个maven工程,pom.xml中的依赖如下:
<!-- WICKET DEPENDENCIES --><dependency><groupId>org.apache.wicket</groupId><artifactId>wicket</artifactId><version>${wicket.version}</version></dependency><!-- OPTIONAL <dependency><groupId>org.apache.wicket</groupId><artifactId>wicket-extensions</artifactId><version>${wicket.version}</version></dependency>--><!-- LOGGING DEPENDENCIES - LOG4J --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.4.2</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.14</version></dependency><!-- JUNIT DEPENDENCY FOR TESTING --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><!--mongoDB for test--><dependency><groupId>org.mongodb</groupId><artifactId>mongo-java-driver</artifactId><version>3.0.2</version></dependency><!-- JETTY DEPENDENCIES FOR TESTING --><dependency><groupId>org.mortbay.jetty</groupId><artifactId>jetty</artifactId><version>${jetty.version}</version><scope>provided</scope></dependency><dependency><groupId>org.mortbay.jetty</groupId><artifactId>jetty-util</artifactId><version>${jetty.version}</version><scope>provided</scope></dependency><dependency><groupId>org.mortbay.jetty</groupId><artifactId>jetty-management</artifactId><version>${jetty.version}</version><scope>provided</scope></dependency></dependencies>
编写以下九个方法,以下几个方法,就是主要的连接,增删改查操作:
package com.haizhi.mongoDB.connect;import com.mongodb.*;import java.util.List;import java.util.Map;import java.util.Set;/** * Created by xiaxuan on 15/7/17. */public class MongoDb { //1、连接到数据库 public MongoClient getMongo(){ //1、连接到MongoDB数据库 MongoClient mongo=new MongoClient("127.0.0.1",27017); return mongo; } //2、获取指定数据库 public DB getDb(String DbName){ MongoClient mongo=getMongo(); return mongo.getDB(DbName); } //3、显示数据库中所有数据库 public void showDb(){ MongoClient mongo=getMongo(); //显示所有数据库 List<String> dbs=mongo.getDatabaseNames(); for(String database:dbs){ System.out.println(database); } } //4、获取一个表 public DBCollection getTable(DB db,String tableName){ //如果表不存在,MongoDB将会创建一个 DBCollection table=db.getCollection("users"); return table; } //5、显示数据库中所有表 public void showTables(DB db){ //显示选择的数据库中所有表 Set<String> tables=db.getCollectionNames(); for(String coll:tables){ System.out.println(coll); } } //6、新增一条记录 public void insert(Map<String,Object> map,DBCollection table){ BasicDBObject document=new BasicDBObject(); for(Object key:map.keySet()){ document.put((String) key, map.get(key)); } table.insert(document); } //7、查找并显示一条记录 public void search(BasicDBObject basicDBObject,DBCollection table){ DBCursor dbCursor=table.find(basicDBObject); while(dbCursor.hasNext()){ System.out.println(dbCursor.next()); } System.out.println("End"); } //8、更新一条记录 public void update(BasicDBObject query,BasicDBObject newDocument,DBCollection table){ BasicDBObject updateObj=new BasicDBObject(); updateObj.put("$set",newDocument); table.update(query, updateObj); } //9、删除一条记录 public void delete(BasicDBObject basicDBObject,DBCollection table){ table.remove(basicDBObject); }}
现在,在test文件夹中,新建测试类:
testInsert:package com.haizhi.testMongoDB;import com.haizhi.mongoDB.connect.MongoDb;import com.mongodb.DBCollection;import com.mongodb.DB;import com.mongodb.MongoClient;import org.junit.Test;import java.util.HashMap;import java.util.Map;/** * Created by xiaxuan on 15/7/17. */public class testInsert { @Test public void insert(){ MongoDb mongoDb=new MongoDb(); MongoClient mongo=mongoDb.getMongo(); DB dB=mongoDb.getDb("MongoTest"); DBCollection table=mongoDb.getTable(dB, "users"); Map<String,Object> map=new HashMap<String, Object>(); map.put("id",3); map.put("name","xiaxuan"); map.put("age",22); map.put("sex",true); map.put("nickname","bingwen"); mongoDb.insert(map,table); }}
执行完程序后,在数据库中搜索:
在数据库中查询到,这一条记录成功插入。
现在测试查询:
testSearch:
package com.haizhi.testMongoDB;import com.haizhi.mongoDB.connect.MongoDb;import com.mongodb.BasicDBObject;import com.mongodb.DBCollection;import com.mongodb.MongoClient;import com.mongodb.DB;import org.junit.Test;/** * Created by xiaxuan on 15/7/17. */public class testSearch { @Test public void testSearch(){ MongoDb mongoDb=new MongoDb(); MongoClient mongo=mongoDb.getMongo(); DB dB=mongoDb.getDb("MongoTest"); DBCollection talbe=mongoDb.getTable(dB, "users"); BasicDBObject basicDBObject=new BasicDBObject(); basicDBObject.append("name","xiaxuan"); mongoDb.search(basicDBObject,talbe); }}
成功查询到两条数据。
修改的测试源程序和删除的基本相同,这里就只贴出源码,不再演示具体效果。
testUpdate:
package com.haizhi.testMongoDB;import com.haizhi.mongoDB.connect.MongoDb;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.sun.xml.internal.rngom.parse.host.Base;import org.junit.Test;/** * Created by xiaxuan on 15/7/17. */public class testUpdate { @Test public void update(){ MongoDb mongoDb=new MongoDb(); DB dB=mongoDb.getDb("MongoTest"); DBCollection table=mongoDb.getTable(dB, "users"); BasicDBObject query=new BasicDBObject(); query.put("name","xiaxuan"); BasicDBObject newDocument=new BasicDBObject(); newDocument.put("name","bingwen"); mongoDb.update(query,newDocument,table); }}
testDelete:
package com.haizhi.testMongoDB;import com.haizhi.mongoDB.connect.MongoDb;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import org.junit.Test;/** * Created by xiaxuan on 15/7/17. */public class testDelete { @Test public void delete(){ MongoDb mongoDb=new MongoDb(); DB dB=mongoDb.getDb("MongoTest"); DBCollection table=mongoDb.getTable(dB, "users"); BasicDBObject basicDBObject=new BasicDBObject(); basicDBObject.put("name","xiaxuan"); mongoDb.delete(basicDBObject,table); }}连接Mongodb,以及基本的增删改查操作,就是这些,连接MongoDb,操作,基本操作都还是比较简单。
版权声明:本文为博主原创文章,未经博主允许不得转载。
java连接MongoDB数据库
标签:mongodb maven java
如何在java中使用mongodb
这段时间尝试了一下MongoDB,感觉十分易用,方便,相比关系型的数据库来说优势也很大,于是尝试了下使用java连接MongoDB,并进行了
基本的增删改查操作。
首先先在控制台中连接数据库,查看数据库有几个表。
现在,新建一个maven工程,pom.xml中的依赖如下:
<!-- WICKET DEPENDENCIES --><dependency><groupId>org.apache.wicket</groupId><artifactId>wicket</artifactId><version>${wicket.version}</version></dependency><!-- OPTIONAL <dependency><groupId>org.apache.wicket</groupId><artifactId>wicket-extensions</artifactId><version>${wicket.version}</version></dependency>--><!-- LOGGING DEPENDENCIES - LOG4J --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.4.2</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.14</version></dependency><!-- JUNIT DEPENDENCY FOR TESTING --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><!--mongoDB for test--><dependency><groupId>org.mongodb</groupId><artifactId>mongo-java-driver</artifactId><version>3.0.2</version></dependency><!-- JETTY DEPENDENCIES FOR TESTING --><dependency><groupId>org.mortbay.jetty</groupId><artifactId>jetty</artifactId><version>${jetty.version}</version><scope>provided</scope></dependency><dependency><groupId>org.mortbay.jetty</groupId><artifactId>jetty-util</artifactId><version>${jetty.version}</version><scope>provided</scope></dependency><dependency><groupId>org.mortbay.jetty</groupId><artifactId>jetty-management</artifactId><version>${jetty.version}</version><scope>provided</scope></dependency></dependencies>
编写以下九个方法,以下几个方法,就是主要的连接,增删改查操作:
package com.haizhi.mongoDB.connect;import com.mongodb.*;import java.util.List;import java.util.Map;import java.util.Set;/** * Created by xiaxuan on 15/7/17. */public class MongoDb { //1、连接到数据库 public MongoClient getMongo(){ //1、连接到MongoDB数据库 MongoClient mongo=new MongoClient("127.0.0.1",27017); return mongo; } //2、获取指定数据库 public DB getDb(String DbName){ MongoClient mongo=getMongo(); return mongo.getDB(DbName); } //3、显示数据库中所有数据库 public void showDb(){ MongoClient mongo=getMongo(); //显示所有数据库 List<String> dbs=mongo.getDatabaseNames(); for(String database:dbs){ System.out.println(database); } } //4、获取一个表 public DBCollection getTable(DB db,String tableName){ //如果表不存在,MongoDB将会创建一个 DBCollection table=db.getCollection("users"); return table; } //5、显示数据库中所有表 public void showTables(DB db){ //显示选择的数据库中所有表 Set<String> tables=db.getCollectionNames(); for(String coll:tables){ System.out.println(coll); } } //6、新增一条记录 public void insert(Map<String,Object> map,DBCollection table){ BasicDBObject document=new BasicDBObject(); for(Object key:map.keySet()){ document.put((String) key, map.get(key)); } table.insert(document); } //7、查找并显示一条记录 public void search(BasicDBObject basicDBObject,DBCollection table){ DBCursor dbCursor=table.find(basicDBObject); while(dbCursor.hasNext()){ System.out.println(dbCursor.next()); } System.out.println("End"); } //8、更新一条记录 public void update(BasicDBObject query,BasicDBObject newDocument,DBCollection table){ BasicDBObject updateObj=new BasicDBObject(); updateObj.put("$set",newDocument); table.update(query, updateObj); } //9、删除一条记录 public void delete(BasicDBObject basicDBObject,DBCollection table){ table.remove(basicDBObject); }}
现在,在test文件夹中,新建测试类:
testInsert:package com.haizhi.testMongoDB;import com.haizhi.mongoDB.connect.MongoDb;import com.mongodb.DBCollection;import com.mongodb.DB;import com.mongodb.MongoClient;import org.junit.Test;import java.util.HashMap;import java.util.Map;/** * Created by xiaxuan on 15/7/17. */public class testInsert { @Test public void insert(){ MongoDb mongoDb=new MongoDb(); MongoClient mongo=mongoDb.getMongo(); DB dB=mongoDb.getDb("MongoTest"); DBCollection table=mongoDb.getTable(dB, "users"); Map<String,Object> map=new HashMap<String, Object>(); map.put("id",3); map.put("name","xiaxuan"); map.put("age",22); map.put("sex",true); map.put("nickname","bingwen"); mongoDb.insert(map,table); }}
执行完程序后,在数据库中搜索:
在数据库中查询到,这一条记录成功插入。
现在测试查询:
testSearch:
package com.haizhi.testMongoDB;import com.haizhi.mongoDB.connect.MongoDb;import com.mongodb.BasicDBObject;import com.mongodb.DBCollection;import com.mongodb.MongoClient;import com.mongodb.DB;import org.junit.Test;/** * Created by xiaxuan on 15/7/17. */public class testSearch { @Test public void testSearch(){ MongoDb mongoDb=new MongoDb(); MongoClient mongo=mongoDb.getMongo(); DB dB=mongoDb.getDb("MongoTest"); DBCollection talbe=mongoDb.getTable(dB, "users"); BasicDBObject basicDBObject=new BasicDBObject(); basicDBObject.append("name","xiaxuan"); mongoDb.search(basicDBObject,talbe); }}
成功查询到两条数据。
修改的测试源程序和删除的基本相同,这里就只贴出源码,不再演示具体效果。
testUpdate:
package com.haizhi.testMongoDB;import com.haizhi.mongoDB.connect.MongoDb;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.sun.xml.internal.rngom.parse.host.Base;import org.junit.Test;/** * Created by xiaxuan on 15/7/17. */public class testUpdate { @Test public void update(){ MongoDb mongoDb=new MongoDb(); DB dB=mongoDb.getDb("MongoTest"); DBCollection table=mongoDb.getTable(dB, "users"); BasicDBObject query=new BasicDBObject(); query.put("name","xiaxuan"); BasicDBObject newDocument=new BasicDBObject(); newDocument.put("name","bingwen"); mongoDb.update(query,newDocument,table); }}
testDelete:
package com.haizhi.testMongoDB;import com.haizhi.mongoDB.connect.MongoDb;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import org.junit.Test;/** * Created by xiaxuan on 15/7/17. */public class testDelete { @Test public void delete(){ MongoDb mongoDb=new MongoDb(); DB dB=mongoDb.getDb("MongoTest"); DBCollection table=mongoDb.getTable(dB, "users"); BasicDBObject basicDBObject=new BasicDBObject(); basicDBObject.put("name","xiaxuan"); mongoDb.delete(basicDBObject,table); }}连接Mongodb,以及基本的增删改查操作,就是这些,连接MongoDb,操作,基本操作都还是比较简单。
版权声明:本文为博主原创文章,未经博主允许不得转载。
java连接MongoDB数据库
标签:mongodb maven java
怎么使用java操作mongodb更新整个文档
上篇博客介绍了java操作mongoDB进行对文件的处理。现在来介绍一下对文档的处理。和对文件的处理一样,也是通过java驱动中提供的几个类相互作用完成的。这几个类分别是:
DBCollection类:指定数据库中指定集合的实例,提供了增删改查等一系列操作。在关系型数据库中,对数据的增删改查操作是建立在表的基础上的,在mongodb中是建立在集合的基础上进行的。
DBObject接口:DBObject是键值的映射,因此,可以将DBObject的实现类作为查询的返回结果,也可以作为查询条件
DBCursor:游标,返回结果的集合。
下面是部分实例:
[java] view plaincopy
Mongo mongo = new Mongo();
DB db = mongo.getDB("myMongoDB");
DBCollection course = db.getCollection("course");//对myMongoDB数据库中course集合进行操作
//添加操作
//下面分别是创建文档的几种方式:1. .append() 2. .put() 3. 通过map 4. 将json转换成DBObject对象
DBObject english = new BasicDBObject().append("name","english").append("score", 5).append("id",1);
course.insert(english);
DBObject math = new BasicDBObject();
math.put("id", 2);
math.put("name", "math");
math.put("score", 10);
course.insert(math);
Map<String,Object> map = new HashMap<String,Object>();
map.put("name","physics" );
map.put("score", 10);
map.put("id", 3);
DBObject physics= new BasicDBObject(map);
course.insert(physics);
String json ="{'name':'chemistry','score':10,'id':4}";
DBObject chemistry =(DBObject)JSON.parse(json);
course.insert(chemistry);
List<DBObject> courseList = new ArrayList<DBObject>();
DBObject chinese = new BasicDBObject().append("name","chinese").append("score", 10).append("id", 5);
DBObject history = new BasicDBObject().append("name", "history").append("score", 10).append("id", 6);
courseList.add(chinese);
courseList.add(history);
course.insert(courseList);
//添加内嵌文档
String json2 =" {'name':'english','score':10,'teacher':[{'name':'柳松','id':'1'},{'name':'柳松松','id':2}]}";
DBObject english2= (DBObject)JSON.parse(json);
course.insert(english2);
List<DBObject> list = new ArrayList<DBObject>();
list.add(new BasicDBObject("name","柳松").append("id",1));
list.add(new BasicDBObject("name","柳松松").append("id",2));
DBObject english3= new BasicDBObject().append("name","english").append("score",10).append("teacher",list);
//查询
//查询所有、查询一个文档、条件查询
DBCursor cur = course.find();
while(cur.hasNext()){
DBObject document = cur.next();
System.out.println(document.get("name"));
}
DBObject document = course.findOne();
String name=(String)document.get("name");
System.out.println(name);
//查询学分=5的
DBObject query1 = new BasicDBObject("score",5);
DBObject query2 = new BasicDBObject("score",new BasicDBObject("$gte",5));
DBCursor cur2 = course.find(query2);
//条件表达式:$ge(>) $get(>=) $lt(<) $lte(<=) $ne(<>) $in $nin $all $exists $or $nor $where $type等等
//查找并修改
DBObject newDocument = course.findAndModify(new BasicDBObject("score",5), new BasicDBObject("score",15));
//更新操作
//q:更新条件 o:更新后的对象
course.update(new BasicDBObject("score",10), new BasicDBObject("test",15));
course.update(new BasicDBObject("score",15), new BasicDBObject("$set",new BasicDBObject("isRequired",true)));
//两个的区别是,第一个更新是将{"test":15}这个文档替换原来的文档,
//第二个更新添加了条件表达式$set,是在原来文档的基础上添加"isRequired"这个键
//条件表达式:$set $unset $push $inc $push $push $addToSet $pull $pullAll $pop等等
//当_id相同时,执行save方法相当于更新操作
course.save(new BasicDBObject("name","math").append("_id", 1));
course.save(new BasicDBObject("name","数学").append("_id", 1));
//删除符合条件的文档
course.remove(new BasicDBObject("score",15));
//删除集合及所有文档
course.drop();<span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;">
</span></span>
上面只是介绍了一些简单的操作,具体复杂的查询更新可以根据需求再去查找文档资料。其实,不管操作简单还是复杂,其核心都是对DBObject和DBCollection的操作,主要掌握DBObject如何构造键值对,以及一些条件表达式。
java直接操作mongodb语句
参考如下
public class MongoDBJDBC {
public static void main(String[] args) {
try {
// 实例化Mongo对象,连接27017端口
Mongo mongo = new Mongo("localhost", 27017);
// 连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
DB db = mongo.getDB("test");
// Get collection from MongoDB, database named "yourDB"
// 从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立
DBCollection collection = db.getCollection("test1");
// 使用BasicDBObject对象创建一个mongodb的document,并给予赋值。
BasicDBObject document = new BasicDBObject();
//document.put("id", 1001);
//document.put("msg", "hello world mongoDB in Java");
// 将新建立的document保存到collection中去
//collection.insert(document);
// 创建要查询的document
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "chen");
// 使用collection的find方法查找document
DBCursor cursor = collection.find(searchQuery);
// 循环输出结果
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
System.out.println("Hello World");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
}
}追问这个调用方式,是3.0版本之前的。我想知道有没有办法直接输入mongodb的操作命令?
java直接操作mongodb语句
参考如下
public class MongoDBJDBC {
public static void main(String[] args) {
try {
// 实例化Mongo对象,连接27017端口
Mongo mongo = new Mongo("localhost", 27017);
// 连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立
DB db = mongo.getDB("test");
// Get collection from MongoDB, database named "yourDB"
// 从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立
DBCollection collection = db.getCollection("test1");
// 使用BasicDBObject对象创建一个mongodb的document,并给予赋值。
BasicDBObject document = new BasicDBObject();
//document.put("id", 1001);
//document.put("msg", "hello world mongoDB in Java");
// 将新建立的document保存到collection中去
//collection.insert(document);
// 创建要查询的document
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("name", "chen");
// 使用collection的find方法查找document
DBCursor cursor = collection.find(searchQuery);
// 循环输出结果
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
System.out.println("Hello World");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (MongoException e) {
e.printStackTrace();
}
}
}追问这个调用方式,是3.0版本之前的。我想知道有没有办法直接输入mongodb的操作命令?
关于mongoDB的$or 怎么用java实现
举例:
public static void selectAll() throws Exception{
//第一:实例化mongo对象,连接mongodb服务器 包含所有的数据库
//默认构造方法,默认是连接本机,端口号,默认是27017
//相当于Mongo mongo =new Mongo("localhost",27017)
Mongo mongo =new Mongo();
//第二:连接具体的数据库
//其中参数是具体数据库的名称,若服务器中不存在,会自动创建
DB db=mongo.getDB("myMongo");
//第三:操作具体的表
//在mongodb中没有表的概念,而是指集合
//其中参数是数据库中表,若不存在,会自动创建
DBCollection collection=db.getCollection("user");
BasicDBList condList = new BasicDBList();
BasicDBObject cond = null;
String ageStr = "function (){return parseFloat(this.id) > 2 && parseFloat(this.id) <= 4};";
cond = new BasicDBObject();
cond.put("$where",ageStr);
Pattern pattern = Pattern.compile("^.*明.*$", Pattern.CASE_INSENSITIVE);
BasicDBObject query =new BasicDBObject();
query.put("name", pattern);
condList.add(query);
condList.add(cond);
BasicDBObject searchCond = new BasicDBObject();
searchCond.put("$or", condList);
//查询操作
DBCursor cursor=collection.find(searchCond);
System.out.println("mongodb中的user表结果如下:");
while(cursor.hasNext()){
System.out.println(cursor.next());
}
}
mongoDB在 java中的事务怎么实现
MongoDB自身是不提供事务处理的。如果要实现事务操作,必须自己写实现代码。
在为你的项目选定数据库的时候,要根据你的项目来量身选择。如果需要强事务操作的和数据一致性很高的地方,最好选择健壮的关系行数据库。
如果对事务处理要求不高,而对数据存取要求很高的,则选择非关系型数据库。
mongoDB在 java中的事务怎么实现
MongoDB自身是不提供事务处理的。如果要实现事务操作,必须自己写实现代码。
在为你的项目选定数据库的时候,要根据你的项目来量身选择。如果需要强事务操作的和数据一致性很高的地方,最好选择健壮的关系行数据库。
如果对事务处理要求不高,而对数据存取要求很高的,则选择非关系型数据库。