mongodb-java-driver基本用法
1、先下载mongodb-java-driver 目前最新版本是2.9.3
2、下面是基本的CRUD示例代码:
package com.cnblogs.yjmyzz.cache.test; import com.google.gson.Gson;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.util.JSON; import java.net.UnknownHostException;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set; import org.junit.Test; public class TestMongoDriver { @Test
public void testCRUD() throws UnknownHostException {
// 连接到mongodb
Mongo mongo = new Mongo("localhost", 27017); // 打开数据库test
DB db = mongo.getDB("test"); // 遍历所有集合的名字
Set<String> colls = db.getCollectionNames();
for (String s : colls) {
System.out.println(s);
// 先删除所有Collection(类似于关系数据库中的"表")
if (!s.equals("system.indexes")) {
db.getCollection(s).drop();
}
} // 取得集合emp(若:emp不存在,mongodb将自动创建该集合)
DBCollection coll = db.getCollection("emp"); // delete all
DBCursor dbCursor = coll.find();
for (DBObject dbObject : dbCursor) {
coll.remove(dbObject);
} // create
BasicDBObject doc = new BasicDBObject("name", "杨俊明").append("sex", "男")
.append("address",
new BasicDBObject("postcode", "201202").append(
"street", "田林路888号").append("city", "上海"));
coll.insert(doc); // retrieve
BasicDBObject docFind = new BasicDBObject("name", "杨俊明");
DBObject findResult = coll.findOne(docFind);
System.out.println(findResult); // update
doc.put("sex", "MALE");// 把sex属性从"男",改成"MALE"
coll.update(docFind, doc);
findResult = coll.findOne(docFind);
System.out.println(findResult); coll.dropIndexes();// 先删除所有索引
// create index
coll.createIndex(new BasicDBObject("name", 1)); // 1代表升序 // 复杂对象
UserData userData = new UserData("jimmy", "123456");
Set<String> pets = new HashSet<String>();
pets.add("cat");
pets.add("dog");
Map<String, String> favoriteMovies = new HashMap<String, String>();
favoriteMovies.put("dragons", "Dragons II");
favoriteMovies.put("avator", "Avator I");
userData.setFavoriteMovies(favoriteMovies);
userData.setPets(pets);
userData.setBirthday(getDate(1990, 5, 1));
BasicDBObject objUser = new BasicDBObject("key", "jimmy").append(
"value", toDBObject(userData));
coll.insert(objUser);
System.out.println(coll.findOne(objUser));
} /**
* 将普通Object对象转换成mongodb的DBObject对象
*
* @param obj
* @return
*/
private DBObject toDBObject(Object obj) {
Gson gson = new Gson();
String json = gson.toJson(obj);
return (DBObject) JSON.parse(json);
} /**
* 获取指定日期
*
* @param year
* @param month
* @param day
* @return
*/
private Date getDate(int year, int month, int day) {
Calendar calendar = Calendar.getInstance();
calendar.clear();
calendar.set(year, month - 1, day);
return calendar.getTime(); } }
其中,为了演示复杂对象的持久化,类UserData定义如下:
package com.cnblogs.yjmyzz.cache.test; import java.io.Serializable;
import java.util.Date;
import java.util.Map;
import java.util.Set; public class UserData implements Serializable { private static final long serialVersionUID = -4770493237851400594L;
private String userName;
private String password;
private Set<String> pets;
private Map<String, String> favoriteMovies;
private Date birthday; public UserData() {
} public UserData(String userName, String passWord) {
this.userName = userName;
this.password = passWord;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public Set<String> getPets() {
return pets;
} public void setPets(Set<String> pets) {
this.pets = pets;
} public Map<String, String> getFavoriteMovies() {
return favoriteMovies;
} public void setFavoriteMovies(Map<String, String> favoriteMovies) {
this.favoriteMovies = favoriteMovies;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
运行效果如下:
emp
system.indexes
{ "_id" : { "$oid" : "53d34795744ec171e7f6980a"} , "name" : "杨俊明" , "sex" : "男" , "address" : { "postcode" : "201202" , "street" : "田林路888号" , "city" : "上海"}}
{ "_id" : { "$oid" : "53d34795744ec171e7f6980a"} , "name" : "杨俊明" , "sex" : "MALE" , "address" : { "postcode" : "201202" , "street" : "田林路888号" , "city" : "上海"}}
{ "_id" : { "$oid" : "53d34796744ec171e7f6980b"} , "key" : "jimmy" , "value" : { "userName" : "jimmy" , "password" : "123456" , "pets" : [ "cat" , "dog"] , "favoriteMovies" : { "dragons" : "Dragons II" , "avator" : "Avator I"} , "birthday" : "May 1, 1990 12:00:00 AM"}}
延伸阅读:
mondodb-java-driver 官方在线文档
搭建高可用的MongoDB集群(上):MongoDB的配置与副本集
搭建高可用mongodb集群(三)—— 深入副本集内部机制
搭建高可用mongodb集群(四)—— 分片
mongodb-java-driver基本用法的更多相关文章
- MongoDB Java Driver操作指南
MongoDB为Java提供了非常丰富的API操作,相比关系型数据库,这种NoSQL本身的数据也有点面向对象的意思,所以对于Java来说,Mongo的数据结构更加友好. MongoDB在今年做了一次重 ...
- Mongodb Java Driver 参数配置解析
要正确使用Mongodb Java Driver,MongoClientOptions参数配置对数据库访问的并发性能影响极大. connectionsPerHost:与目标数据库能够建立的最大conn ...
- MongoDB Java Driver
本文使用 Java 来描述对 Mongodb 的相关操作,数据库版本是 3.2.8,驱动版本为 3.2.2. 本文将讨论 如何连接MongoDB 文档的 CURD 操作 文档的上传和下载 1. 连接到 ...
- MongoDB Java Driver 3.4操作
导入jar包 <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-dr ...
- BuguMongo是一个MongoDB Java开发框架,集成了DAO、Query、Lucene、GridFS等功能
http://code.google.com/p/bugumongo/ 简介 BuguMongo是一个MongoDB Java开发框架,它的主要功能包括: 基于注解的对象-文档映射(Object-Do ...
- 数据库.MongoDB.Java样例
1.先在MongoDB官网下载Java驱动包 MongoDB Java Driver: http://mongodb.github.io/mongo-java-driver/ JAR包下载列表 htt ...
- 给java mongodb 官方driver 增加bean 操作
mongodb官方的java driver不支持直接插入java bean,只能使用DbObject的Key,Value形式进行insert,update,(c# mongodb官方driver类 ...
- MongoDB Java连接---MongoDB基础用法(四)
MongoDB 连接 标准 URI 连接语法: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN ...
- Date, TimeZone, MongoDB, java中date的时区问题
打印new Date(),Fri Aug 12 13:37:51 CST 2016. 显示Asia/Shanghai的时区,但是date toString 的时区简写却是CST.更坑爹的是,Googl ...
- [译] MongoDB Java异步驱动快速指南
导读 mongodb-java-driver是mongodb的Java驱动项目. 本文是对MongoDB-java-driver官方文档 MongoDB Async Driver Quick Tour ...
随机推荐
- vs如何在C++中调用Lua
最近Cocos2dx的学习卡壳了,一般的照抄代码我不想写上来,但想示例也想得我头晕...为了放松大脑调整状态于是开始学习Lua.Lua的语法学习还是比较简单的,学过javascript或者vbscri ...
- mysql创建数据库指定编码uft8
mysql创建数据库指定编码uft8 CREATE DATABASE IF NOT EXISTS my_db default character set utf8 COLLATE utf8_gener ...
- Python基础语法
学习一门编程语言,通常是学习该语言的以下几个部分的内容: 基础语法:如,变量的声明与调用.基本输出语句.代码块语法.注释等: 数据类型:通常都为 数字.字符串.布尔值.数组.链表.Map.Set等: ...
- AMD 和 CMD 的区别有哪些?
看到玉伯在介绍seajs和requirejs时,说“RequireJS 遵循的是 AMD(异步模块定义)规范,SeaJS 遵循的是 CMD (通用模块定义)规范”. 能否详细(举例)说明下这个2个规范 ...
- 为什么MVC不是一种设计模式
http://damoqiongqiu.iteye.com/blog/1949256 ---比较Backbone和Ext4.x在MVC实现上的差异 大漠穷秋 前言 圣人云:不想做妈咪的小姐不是好码农. ...
- poj 2226 Muddy Fields(合理建图+二分匹配)
/* 题意:用木板盖住泥泞的地方,不能盖住草.木板任意长!可以重叠覆盖! '*'表示泥泞的地方,'.'表示草! 思路: 首先让我们回忆一下HDU 2119 Matrix这一道题,一个矩阵中只有0, 1 ...
- 使用 CSS3 伪元素实现立体的照片堆叠效
CSS3 里引入的伪元素让 Web 开发人员能够在不需要额外添加 HTML 标签的情况下制作出复杂的视觉效果.例如,:before 和 :after 这个两个 CSS3 伪元素就可以帮助你实现很多有趣 ...
- Git的奇技淫巧🙈
Git的奇技淫巧
- [java] 汇率换算器实现(3)
[java] 汇率换算器实现(3) // */ // ]]> [java] 汇率换算器实现(3) Table of Contents 1 系列文章地址 2 前言 3 提取简单表单信息 3.1 ...
- C#抓取天气数据
使用C#写的一个抓取天气数据的小工具,使用正则匹配的方式实现,代码水平有限,供有需要的同学参考.压缩包中的两个sql语句是建表用的. http://files.cnblogs.com/files/yu ...