package study.java.hanyx.mongodb.test;
import java.util.Date;
import org.bson.Document;
import org.bson.conversions.Bson;
import org.bson.types.ObjectId;
import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
/**
* Mongodb 简单的增删改查 演示
* @author 韩元旭
*/
public class TestMongoClient {
public static void main(String[] args) {
insertData();
find();
findById();
findWithCondtion();
findWithCondtions();
removeData();
updateData();
findByPage();
}
/**
* 测试一下插入数据
*/
public static void insertData() {
//获取一个连接
MongoClient mongo = new MongoClient("192.168.56.101", 27017);
//获取数据库
MongoDatabase db = mongo.getDatabase("hanyx");
//获取集合
MongoCollection<Document> coll = db.getCollection("users");
//文档
Document one = new Document();
one.append("user_name", "hanyx").append("age", 23).append("sex", "M").append("create_date", new Date());
//文档
Document two = new Document();
two.append("company_name", "AsiaInfo").append("address", "海淀区").append("ceo", "tian");
//插入数据
coll.insertOne(one);
coll.insertOne(two);
mongo.close();
}
/**
* 查询所有数据
*/
public static void find() {
//获取一个连接
MongoClient mongo = new MongoClient("192.168.56.101", 27017);
//获取数据库
MongoDatabase db = mongo.getDatabase("hanyx");
//获取集合
MongoCollection<Document> coll = db.getCollection("users");
FindIterable<Document> result = coll.find();
if (result != null) {
for (Document doc: result) {
System.out.println(doc.get("user_name") + " : " +doc);
}
}
mongo.close();
}
/**
* 测试一下根据主键Id查询
*/
public static void findById() {
//获取一个连接
MongoClient mongo = new MongoClient("192.168.56.101", 27017);
//获取数据库
MongoDatabase db = mongo.getDatabase("hanyx");
//获取集合
MongoCollection<Document> coll = db.getCollection("users");
Document doc = coll.find(Filters.eq("_id", new ObjectId("5642a7d53eaf370d9084f65a"))).first();
if (doc != null) {
System.out.println(doc.get("user_name") + " : " +doc);
}
mongo.close();
}
/**
* 测试一下根据条件查询
*/
public static void findWithCondtion() {
//获取一个连接
MongoClient mongo = new MongoClient("192.168.56.101", 27017);
//获取数据库
MongoDatabase db = mongo.getDatabase("hanyx");
//获取集合
MongoCollection<Document> coll = db.getCollection("users");
MongoCursor<Document> iterator = coll.find(Filters.eq("age", 23)).iterator();
while (iterator.hasNext()) {
Document doc = iterator.next();
System.out.println(doc.get("user_name") + " : " +doc);
}
iterator.close();
mongo.close();
}
/**
* 测试一下根据多条件查询
*/
public static void findWithCondtions() {
//获取一个连接
MongoClient mongo = new MongoClient("192.168.56.101", 27017);
//获取数据库
MongoDatabase db = mongo.getDatabase("hanyx");
//获取集合
MongoCollection<Document> coll = db.getCollection("users");
MongoCursor<Document> iterator = coll.find(Filters.and(Filters.eq("user_name", "hanyx"),Filters.eq("age", 23))).iterator();
while (iterator.hasNext()) {
Document doc = iterator.next();
System.out.println(doc.get("user_name") + " : " +doc);
}
iterator.close();
mongo.close();
}
/**
* 测试一下删除数据
*/
public static void removeData() {
//获取一个连接
MongoClient mongo = new MongoClient("192.168.56.101", 27017);
//获取数据库
MongoDatabase db = mongo.getDatabase("hanyx");
//获取集合
MongoCollection<Document> coll = db.getCollection("users");
DeleteResult delResult = coll.deleteMany(Filters.eq("company_name", "AsiaInfo"));
System.out.println(delResult);
mongo.close();
}
/**
* 测试一下修改数据
*/
public static void updateData() {
//获取一个连接
MongoClient mongo = new MongoClient("192.168.56.101", 27017);
//获取数据库
MongoDatabase db = mongo.getDatabase("hanyx");
//获取集合
MongoCollection<Document> coll = db.getCollection("users");
Document newdoc = new Document();
newdoc.put("company_name", "AsiaInfo Beijing");
UpdateResult updResult = coll.updateMany(Filters.eq("company_name", "AsiaInfo"), new Document("$set", newdoc));
System.out.println(updResult);
mongo.close();
}
/**
* 分页查询的例子
*/
public static void findByPage() {
//获取一个连接
MongoClient mongo = new MongoClient("192.168.56.101", 27017);
//获取数据库
MongoDatabase db = mongo.getDatabase("hanyx");
//获取集合
MongoCollection<Document> coll = db.getCollection("sort");
//初始化一些数据
findByPageInit(coll);
//排序
Bson orderBy = new BasicDBObject("value", 1);
//页码
int pageNo = 2;
//页容量
int pageSize = 5;
//查询
MongoCursor<Document> iterator = coll.find().sort(orderBy)
.skip((pageNo - 1) * pageSize).limit(pageSize).iterator();
//遍历输出
while (iterator.hasNext()) {
Document doc = iterator.next();
System.out.println(doc);
}
iterator.close();
//删除初始化的数据
coll.drop();
mongo.close();
}
public static void findByPageInit(MongoCollection<Document> coll) {
for (int i = 1; i <= 50; i++) {
Document doc = new Document();
doc.append("name", (char)(64 + i)).append("value", i);
coll.insertOne(doc);
}
}
}