MongoDB学习札记 第三篇 JAVA-DRIVER
环境准备:
- mongo能够正常运行,可参考第一篇文章的介绍
如果已经有demo数据库了,建议删除,确保数据干净。
use demo
switched to db demo
db.dropDatabase()
{ “dropped” : “demo”, “ok” : 1 }
本文并没有开启用户认证,直接操作。使用gradle来构建工程。(Gradle怎么使用,参考我的关于gradle介绍的文章)
创建项目 mongo ,并在根目录下面创建 build.gradle 文件
apply plugin:"java"
apply plugin:"eclipse"
repositories{
mavenCentral()
}
dependencies{
compile 'org.mongodb:mongo-java-driver:3.0.2'
}
此外,还要创建和maven那样约定好的源文件,暂不用test的目录
└─src
└─main
├─java
└─resources
那么我们以后的源代码会放在java目录底下,资源文件会放到resources目录底下。
下面我们就开始我们的mongo-java之旅了。
我们在mongo项目根路径 运行 > gradle cleanEclipse eclipse
来生成Eclipse的java项目。然后通过Eclipse的Import… 功能来引入我们的mongo项目,如图
D:\workspace_myeclipse\mongo>gradle cleanEclipse eclipse
HelloMongo.java的源码如下:
package com.piedra.mongo;
import static com.mongodb.client.model.Filters.and;
import static com.mongodb.client.model.Filters.eq;
import static com.mongodb.client.model.Filters.gt;
import static com.mongodb.client.model.Filters.lte;
import java.util.ArrayList;
import java.util.List;
import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.Block;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
/**
* HelloMongo
* 参考: http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/
* @author LINWENBIN
* @since 2015-6-6
*/
public class HelloMongo {
/**
* 往集合里面插入一条数据
* @param coll
* @since 2015-6-6
* @author LINWENBIN
*/
public void insertOne(MongoCollection<Document> coll){
/*
{
"name" : "MongoDB",
"type" : "database",
"count" : 1,
"info" : {
x : 203,
y : 102
}
}
*/
System.out.println("insertOne 插入记录之前 users集合的数量:" + coll.count());
Document doc = new Document("name","MongoDB")
.append("type","database").append("count", 1).append("info", new Document("x","203").append("y","102"));
coll.insertOne(doc);
System.out.println("insertOne 插入记录之后 users集合的数量:" + coll.count());
}
/**
* 插入多条数据
* @param coll
* @since 2015-6-6
* @author LINWENBIN
*/
public void insertMany(MongoCollection<Document> coll){
/*
* 循环插入 {"i" : i}的document
*/
List<Document> docs = new ArrayList<Document>();
for(int i=0; i<10; i++){
docs.add(new Document("i",i));
}
coll.insertMany(docs);
System.out.println("insertMany 插入10条 {i:i} 记录之后 users集合的数量:" + coll.count());
}
/**
* 查询集合coll中的所有数据
* @param coll
* @since 2015-6-6
* @author LINWENBIN
*/
public void findAll(MongoCollection<Document> coll){
MongoCursor<Document> cursor = coll.find().iterator();
try {
System.out.println("findAll 打印结果:");
while(cursor.hasNext()){
System.out.println(cursor.next().toJson());
}
} finally {
cursor.close();
}
}
/**
* 查询满足条件的第一条数据
* @param coll
* @param filter
* @since 2015-6-6
* @author LINWENBIN
*/
public void findSpecifyDoc(MongoCollection<Document> coll, Bson filter){
System.out.println("findSpecifyDoc 打印结果:");
System.out.println(coll.find(filter).first().toJson());
}
/**
* 查询满足条件的文档集合
* @param coll
* @param filter
* @since 2015-6-6
* @author LINWENBIN
*/
public void findDocs(MongoCollection<Document> coll, Bson filter){
Block<Document> printBlock = new Block<Document>() {
@Override
public void apply(final Document document) {
System.out.println(document.toJson());
}
};
System.out.println("findDocs 打印结果:");
coll.find(filter).forEach(printBlock);
}
/**
* 更新文档属性
* @param coll 要操作的集合
* @param criteria 要更新的文档过滤条件
* @param newDoc 新的文档属性
* @since 2015-6-6
* @author LINWENBIN
*/
public void update(MongoCollection<Document> coll, Bson criteria, Document newDoc){
coll.updateMany(criteria, new Document("$set",newDoc));
}
/**
* 删除文档
* @param coll
* @param criteria
* @since 2015-6-6
* @author LINWENBIN
*/
public void delete(MongoCollection<Document> coll, Bson criteria){
coll.deleteMany(criteria);
}
public static void main(String[] args) {
HelloMongo helloMongo = new HelloMongo();
//mongoClient实例本身代表着数据库的连接池
MongoClient mongoClient = new MongoClient("127.0.0.1", 27017);
/**
* Calling the getDatabase() on MongoClient does not create a database.
* Only when a database is written to will a database be created
*/
MongoDatabase db = mongoClient.getDatabase("demo");
MongoCollection<Document> users = db.getCollection("users");
helloMongo.insertOne(users);
helloMongo.insertMany(users);
helloMongo.findAll(users);
helloMongo.findSpecifyDoc(users, eq("i",5));
helloMongo.findDocs(users, and(gt("i",6),lte("i",8)));
helloMongo.update(users, and(gt("i",6),lte("i",8)), new Document("ii",99));
helloMongo.findDocs(users, and(gt("i",6),lte("i",8)));
helloMongo.delete(users, and(gt("i",6),lte("i",8)));
helloMongo.findDocs(users, and(gt("i",6),lte("i",8)));
//销毁
mongoClient.dropDatabase("demo");
//关闭数据库连接
mongoClient.close();
}
}
打印结果:
insertOne 插入记录之前 users集合的数量:0
insertOne 插入记录之后 users集合的数量:1
insertMany 插入10条 {i:i} 记录之后 users集合的数量:11
findAll 打印结果:
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42bd8" }, "name" : "MongoDB", "type" : "database", "count" : 1, "info" : { "x" : "203", "y" : "102" } }
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42bd9" }, "i" : 0 }
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42bda" }, "i" : 1 }
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42bdb" }, "i" : 2 }
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42bdc" }, "i" : 3 }
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42bdd" }, "i" : 4 }
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42bde" }, "i" : 5 }
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42bdf" }, "i" : 6 }
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42be0" }, "i" : 7 }
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42be1" }, "i" : 8 }
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42be2" }, "i" : 9 }
findSpecifyDoc 打印结果:
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42bde" }, "i" : 5 }
findDocs 打印结果:
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42be0" }, "i" : 7 }
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42be1" }, "i" : 8 }
findDocs 打印结果:
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42be0" }, "i" : 7, "ii" : 99 }
{ "_id" : { "$oid" : "5572841e0ef45c0bf0e42be1" }, "i" : 8, "ii" : 99 }
findDocs 打印结果:
转载请注明出处! 原文地址: http://webinglin.github.io