mongodb-java-driver基本用法
1、先下载mongodb-java-driver 目前最新版本是2.9.3
2、下面是基本的CRUD示例代码:
1 package com.cnblogs.yjmyzz.cache.test;
2
3 import com.google.gson.Gson;
4 import com.mongodb.BasicDBObject;
5 import com.mongodb.DB;
6 import com.mongodb.DBCollection;
7 import com.mongodb.DBCursor;
8 import com.mongodb.DBObject;
9 import com.mongodb.Mongo;
10 import com.mongodb.util.JSON;
11
12 import java.net.UnknownHostException;
13 import java.util.Calendar;
14 import java.util.Date;
15 import java.util.HashMap;
16 import java.util.HashSet;
17 import java.util.Map;
18 import java.util.Set;
19
20 import org.junit.Test;
21
22 public class TestMongoDriver {
23
24 @Test
25 public void testCRUD() throws UnknownHostException {
26 // 连接到mongodb
27 Mongo mongo = new Mongo("localhost", 27017);
28
29 // 打开数据库test
30 DB db = mongo.getDB("test");
31
32 // 遍历所有集合的名字
33 Set<String> colls = db.getCollectionNames();
34 for (String s : colls) {
35 System.out.println(s);
36 // 先删除所有Collection(类似于关系数据库中的"表")
37 if (!s.equals("system.indexes")) {
38 db.getCollection(s).drop();
39 }
40 }
41
42 // 取得集合emp(若:emp不存在,mongodb将自动创建该集合)
43 DBCollection coll = db.getCollection("emp");
44
45 // delete all
46 DBCursor dbCursor = coll.find();
47 for (DBObject dbObject : dbCursor) {
48 coll.remove(dbObject);
49 }
50
51 // create
52 BasicDBObject doc = new BasicDBObject("name", "杨俊明").append("sex", "男")
53 .append("address",
54 new BasicDBObject("postcode", "201202").append(
55 "street", "田林路888号").append("city", "上海"));
56 coll.insert(doc);
57
58 // retrieve
59 BasicDBObject docFind = new BasicDBObject("name", "杨俊明");
60 DBObject findResult = coll.findOne(docFind);
61 System.out.println(findResult);
62
63 // update
64 doc.put("sex", "MALE");// 把sex属性从"男",改成"MALE"
65 coll.update(docFind, doc);
66 findResult = coll.findOne(docFind);
67 System.out.println(findResult);
68
69 coll.dropIndexes();// 先删除所有索引
70 // create index
71 coll.createIndex(new BasicDBObject("name", 1)); // 1代表升序
72
73 // 复杂对象
74 UserData userData = new UserData("jimmy", "123456");
75 Set<String> pets = new HashSet<String>();
76 pets.add("cat");
77 pets.add("dog");
78 Map<String, String> favoriteMovies = new HashMap<String, String>();
79 favoriteMovies.put("dragons", "Dragons II");
80 favoriteMovies.put("avator", "Avator I");
81 userData.setFavoriteMovies(favoriteMovies);
82 userData.setPets(pets);
83 userData.setBirthday(getDate(1990, 5, 1));
84 BasicDBObject objUser = new BasicDBObject("key", "jimmy").append(
85 "value", toDBObject(userData));
86 coll.insert(objUser);
87 System.out.println(coll.findOne(objUser));
88 }
89
90 /**
91 * 将普通Object对象转换成mongodb的DBObject对象
92 *
93 * @param obj
94 * @return
95 */
96 private DBObject toDBObject(Object obj) {
97 Gson gson = new Gson();
98 String json = gson.toJson(obj);
99 return (DBObject) JSON.parse(json);
100 }
101
102 /**
103 * 获取指定日期
104 *
105 * @param year
106 * @param month
107 * @param day
108 * @return
109 */
110 private Date getDate(int year, int month, int day) {
111 Calendar calendar = Calendar.getInstance();
112 calendar.clear();
113 calendar.set(year, month - 1, day);
114 return calendar.getTime();
115
116 }
117
118 }
其中,为了演示复杂对象的持久化,类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集群(四)—— 分片
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- vscode使用COS作为图床编写markdown文档
- 一文爱上可视化神器Plotly_express
- 神策大数据用户行为分析
- 3分钟短文:为了你少跳坑,Laravel写好了用户授权
- 巧用ingest pipeline实现Elasticsearch索引的重定向
- leetcode之错误的集合
- vue-element怎么给select下拉框赋值?
- vue 怎么将Checkbox 多选框选中的值提交
- Chrome的小恐龙游戏自动躲避障碍物
- Three.js教程(5):光源
- Three.js教程(6):几何体
- Three.js教程(7):材质
- Keep APP技术研究
- Canvas系列(15):实战-小球拖拽
- Canvas系列(16):实战-小球与斜面碰撞