JAVA操作MongoDB数据库
1、 首先,下载MongoDB对Java支持的驱动包
驱动包下载地址:https://github.com/mongodb/mongo-java-driver/downloads
2、Java操作MongoDB示例
在本示例之前你需要启动mongod.exe的服务,启动后,下面的程序才能顺利执行;
1)、 建立MongoDBTest.java,完成简单的mongoDB数据库操作
Mongo mongo = new Mongo();
这样就创建了一个MongoDB的数据库连接对象,它默认连接到当前机器的localhost地址,端口是27017。
DB db = mongo.getDB(“test”);
这样就获得了一个test的数据库,如果mongoDB中没有创建这个数据库,mongoDB会自动创建当前数据库。
得到了db,下一步我们要获取一个“聚集集合DBCollection”,通过db对象的getCollection方法来完成。
DBCollection users = db.getCollection("users");
这样就获得了一个DBCollection,它相当于我们数据库的“表”。
2)、接下来就可以进行增删改查操作
MongoURI uri = new MongoURI("mongodb://localhost:27017");
String databaseName ="myDatabase";
String collectionName = "mycollections";
Mongo mongo = null;
DB db = null;
DBCollection userCollection;
try {
//定义Mongo服务
mongo =new Mongo("localhost", 27017);
//mongo = new Mongo(uri);
// mongo = new Mongo();
// DBAddress addr = new DBAddress("localhost", 27017,databaseName);
// mongo.connect(addr);
//删除数据库
//mongo.dropDatabase(databaseName);
//获取databaseName对应的数据库,不存在则自动创建
db = mongo.getDB(databaseName);
//添加用户
//db.addUser("admin", new char []{'a','d','m','i','n'});
//移除用户
//db.removeUser("admin");
//验证权限
boolean flag = db.authenticate("admin", new char []{'a','d','m','i','n'} );
if(flag == false){
return;
}
//设置db为只读 ,只读就不能写入数据了 对save管用,对insert好像不管用
//db.setReadOnly(true);
//获取collectionName对应的集合,不存在则自动创建
//db.createCollection("mycollection", new BasicDBObject());
userCollection = db.getCollection(collectionName);
//查询所有的DataBase
for(String dbName : mongo.getDatabaseNames()){
System.out.println("databasename:" + dbName);
}
//查询所有的聚集集合
for(String collection :db.getCollectionNames()){
System.out.println("collectionName:" + collection);
}
//查询是否存在collectionName集合
if(db.collectionExists(collectionName)){
// //去掉重复的数据
// List dislist = userCollection.distinct("userId");
// int len = dislist.size();
// for(int i = 0 ; i< len ; i++){
// System.out.println(dislist.get(i));
// }
//查询
System.out.println(userCollection.find(new BasicDBObject("userId",1)).toArray());
//返回前2个
//System.out.println(userCollection.find({},{reviews:{$slice:2}});
//System.out.println("分页:"+userCollection.find(new BasicDBObject("",new BasicDBObject("$slice", 2))).toArray());
//查询所有的数据
//DB游标
DBCursor cursor = userCollection.find();
while(cursor.hasNext()){
DBObject userDbobj = cursor.next(); System.out.println("userId:"+userDbobj.get("userId")+";age:"+userDbobj.get("age")+";sex:"+userDbobj.get("sex")+";address:"+userDbobj.get("address"));
}
//条件查询
//查询age 等于 24
System.out.println("find age = 24: " + userCollection.find(new BasicDBObject("age", 24)).toArray());
//查询age 大于等于 24
System.out.println("find age >= 24: " + userCollection.find(new BasicDBObject("age", new BasicDBObject("$gte", 24))).toArray());
//查询age 小于等于 24
System.out.println("find age <= 24: " + userCollection.find(new BasicDBObject("age", new BasicDBObject("$lte", 24))).toArray());
//查询age 不等于25
System.out.println("查询age!=25:" + userCollection.find(new BasicDBObject("age", new BasicDBObject("$ne", 25))).toArray());
//查询某个范围的数据
System.out.println("查询age in 25/26/27:" + userCollection.find(new BasicDBObject("age", new BasicDBObject(QueryOperators.IN, new int[] { 25, 26, 27 }))).toArray());
//查询不在某个范围数据
System.out.println("查询age not in 25/26/27:" + userCollection.find(new BasicDBObject("age", new BasicDBObject(QueryOperators.NIN, new int[] { 25, 26, 27 }))).toArray());
//按age排序
System.out.println("查询age exists 排序:" + userCollection.find().sort(new BasicDBObject("age",new BasicDBObject(QueryOperators.ORDER_BY, 1))).limit(2).skip(1).toArray()); //(new BasicDBObject("age", new BasicDBObject(QueryOperators.ORDER_BY, 1))).toArray());
new BasicDBObject();
System.out.println("只查询age属性:" + userCollection.find(null, new BasicDBObject("age", true)).toArray());
System.out.println("只查属性:" + userCollection.find(null, new BasicDBObject("age", true), 0, 2).toArray());
System.out.println("只查属性:" + userCollection.find(null, new BasicDBObject("age", true), 0, 2, Bytes.QUERYOPTION_NOTIMEOUT).toArray());
}
//添加数据
DBObject user = new BasicDBObject();
user.put("userId", 2);
user.put("userName", "tom");
user.put("age", 21);
user.put("sex", "male");
user.put("address", "北京海淀");
userCollection.save(user);
//getN 对save和insert不管用
// WriteResult saveResult = userCollection.save(user);
// System.out.println(saveResult.getN());
// System.out.println(saveResult.isLazy());
// if(saveResult.getN() > 0){
// System.out.println("添加成功");
// }
//添加List集合
// List<DBObject> list = new ArrayList<DBObject>();
// list.add(user);
// DBObject user2 = new BasicDBObject();
// user2.put("userId", 2);
// user2.put("userName", "lily");
// user2.put("age", 20);
// user2.put("sex", "female");
// user2.put("address", "新加坡");
// list.add(user2);
//
// userCollection.insert(list);
//看是否插入成功
System.out.println("集合中数据量:" + userCollection.count());
//删除数据
// WriteResult wr = userCollection.remove(new BasicDBObject("userId",1));
// System.out.println(wr.getN());
// System.out.println(wr.isLazy());
// if(wr.getN() > 0){
// System.out.println("删除成功!");
// }
//删除整个集合
// userCollection.drop();
//修改
DBObject newUser =new BasicDBObject();
newUser.put("userId", 3);
newUser.put("userName", "tomAndKitty");
newUser.put("age", 25);
user.put("sex", "male");
user.put("address", "北京朝阳");
//
// //当数据库不存在就不修改、不添加数据,当多条数据就不修改
// WriteResult updateResult = userCollection.update(new BasicDBObject("userId",1),newUser);
// WriteResult updateResult = userCollection.update(new BasicDBObject("userId",3),newUser,
// true, //如果数据库不存在,是否添加
// false //false只修改第一条,true如果有多条就不修改
// );
// System.out.println(updateResult.getN());
// if(updateResult.getN()>0){
// System.out.println("修改成功");
// }
} catch (UnknownHostException e) {
e.printStackTrace();
}finally{
//关闭Mongo服务
if(mongo != null){
mongo.close();
}
db = null;
userCollection = null;
}
}
JAVA操作MongoDB数据库的更多相关文章
- java操作mongodb数据库实现新建数据库,新建集合,新建文档
*首先明确一点,要通过java代码创建mongodb数据库实例,需要同时创建集合和文档. 代码实现: /* 建立与mongodb数据库的连接,可指定参数,如:MongoClient client = ...
- java操作mongoDB数据库的简单实例
首先导入mongoDB的jar包 http://pan.baidu.com/s/1bnGMJRD //DataBase.java package com.mongodb.test; import ja ...
- 不使用spring的情况下原生java代码两种方式操作mongodb数据库
由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常. 主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...
- 不使用spring的情况下用java原生代码操作mongodb数据库的两种方式
由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常. 主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...
- 【MongoDB for Java】Java操作MongoDB
上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...
- [转]MongoDB for Java】Java操作MongoDB
原文地址: MongoDB for Java]Java操作MongoDB 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开 ...
- 学习MongoDB--(11):应用举例(利用java操作MongoDB)
原文地址:http://blog.csdn.net/drifterj/article/details/7948090 目录地址:http://blog.csdn.net/DrifterJ/articl ...
- Java操作MongoDB
上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html 介绍到了在MongoDB的控制台完成MongoDB的数据操作,通 ...
- Mongodb快速入门之使用Java操作Mongodb
[IT168 专稿]在上一篇文章中,我们学习了Mongodb的安装和初步使用,在本文中,将学习如何使用Java去编程实现对Mongodb的操作. HelloWorld程序 学习任何程序的第一步,都是编 ...
随机推荐
- android 入门-ID
@+id/btn //表示在R.java文件里面新增一个id为btn的控件索引,最常用的一种声明控件id的方式. @+android:id/list //+android:表 ...
- WebRTC代码走读(十):rtp_rtcp模块分析,webrtcrtp_rtcp
转自:http://www.bkjia.com/Androidjc/1020017.html 1. 对外提供的主要流程接口 收包的调用接口RtpReceiverImpl::Incoming ...
- 【使用Unity开发Windows Phone上的2D游戏】(1)千里之行始于足下
写在前面的 其实这个名字起得不太欠当,Unity本身是很强大的工具,可以部署到很多个平台,而不仅仅是可以开发Windows Phone上的游戏. 只不过本人是Windows Phone 应用开发出身, ...
- 应用程序调试工具gdb,王明学learn
应用程序调试工具gdb学习使用 一.GDB简介 GDB 是 GNU 发布的一款功能强大的程序调试工具.GDB 主要完成下面三个方面的功能: 1.启动被调试程序. 2.让被调试的程序在指定的位置停住. ...
- [Unity3D插件]2dtoolkit系列二 动画精灵的创建以及背景图的无限滚动
经过昨天2dtoolkit系列教程一的推出,感觉对新手还有有一定的启发作用,引导学习使用unity 2dToolKit插件的使用过程,今天继续系列二——动画精灵的创建,以及背景图的无限循环滚动,在群里 ...
- Codeforces Beta Round #89 (Div. 2) E. Bertown roads(Tarjan、边双连通分量)
题目链接:http://codeforces.com/problemset/problem/118/E 思路:首先要判断图是否是边双连通,这个Tarjan算法可以判断,若low[v] > dfn ...
- 面向服务的架构SOA
SOA简介 SCA实现SOA的最佳方式 Apache开源框架Tuscany实现SCA架构 SOA简单描述: SOA(Service-Oriented Architecture)面向服务的体系架构.为了 ...
- Oracle自动备份脚本(网上找到的资料)
废话不多说了,直接给大家贴代码了,具体代码如下所示: ? 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 ...
- Web Tours自带示例网站无法打开的解决方案
问题现象: LoadRunner自带的测试样品,旅行社机票预订系统HP Web Tours以下简称为Web Tours. 1.LoadRunner程序的Sample目录下无Web和Web Tours服 ...
- Angular.js 以及个人学习网站
Angular.js 教程 http://www.360doc.com/content/14/0414/15/14416931_368816305.shtml web前端学习: 慕课网:http:/ ...