import java.util.ArrayList;
import java.util.regex.Pattern;
import org.bson.Document;
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.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
public class MongoTest {
private static MongoClient client=null;
private static MongoDatabase database=null;
public static void main( String args[] ){
insert();
findAll();
findByFilter();
findByPattern();
findByParams();
delete();
update();
}
public static void getCollection() { //获取数据库名为test中的集合student
database=getConnectionWithoutParams().getDatabase("test"); //连接到数据库
MongoCollection <Document> collection=getDatabase().getCollection("student");
System.out.println("集合 student 选择成功");
}
public static void insert() { //插入数据
MongoCollection<Document> dbCol=getDatabase().getCollection("student");
ArrayList<Document> list=new ArrayList<>();
Document doc1=new Document();
doc1.append("name", "李华").append("age", 29).append("address", "江苏南京");
list.add(doc1);
Document doc2=new Document();
doc2.append("name", "赵兰").append("age", 27).append("address","湖南长沙");
list.add(doc2);
dbCol.insertMany(list);
System.out.println("插入成功");
}
public static void findAll() { //遍历查询数据
MongoCollection<Document> dbCol=getDatabase().getCollection("student");
FindIterable<Document> findIterable=dbCol.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
while(mongoCursor.hasNext()) {
Document doc=mongoCursor.next();
System.out.println("name:"+doc.getString("name")+"\t age:"+doc.getInteger("age")+"\t address:"+doc.getString("address"));
}
}
public static void findByFilter() { //查询指定的数据
MongoCollection<Document> dbCol=getDatabase().getCollection("student");
BasicDBObject queryObject=new BasicDBObject();
queryObject.append("name", "李华");
FindIterable<Document> findIterable = dbCol.find(queryObject);
MongoCursor<Document> cursor = findIterable.iterator();
while(cursor.hasNext()) {
Document doc=cursor.next();
System.out.println("name:"+doc.getString("name")+"\t age:"+doc.getInteger("age")+"\t address:"+doc.getString("address"));
}
}
public static void findByPattern() { //按照模式查询数据
System.out.println("按照模式查询");
MongoCollection<Document> dbCol=getDatabase().getCollection("student");
Pattern queryPattern=Pattern.compile("华",Pattern.CASE_INSENSITIVE);
BasicDBObject queryObject=new BasicDBObject("name",queryPattern);
FindIterable<Document> findIterable=dbCol.find(queryObject);
MongoCursor<Document> cursor=findIterable.iterator();
while(cursor.hasNext()) {
Document doc=cursor.next();
System.out.println("name:"+doc.getString("name")+"\t age:"+doc.getInteger("age")+"\t address:"+doc.getString("address"));
}
}
public static void findByParams() { //条件查询
/*
* $gt:>
* $gte:>=
$eq: =
$ne: !=
$lt: <
$lte: <=
$in: in
$nin: not in
*/
MongoCollection<Document> dbCol=getDatabase().getCollection("student");
BasicDBObject gt=new BasicDBObject("$gt",24);
BasicDBObject queryOBject=new BasicDBObject("age",gt);
FindIterable<Document> findIterable=dbCol.find(queryOBject);
MongoCursor<Document> cursor=findIterable.iterator();
while(cursor.hasNext()) {
Document doc=cursor.next();
System.out.println("name:"+doc.getString("name")+"\t age:"+doc.getInteger("age")+"\t address:"+doc.getString("address"));
}
}
public static void delete() { //删除数据
MongoCollection<Document> dbCol=getDatabase().getCollection("student");
Document doc=new Document().append("name", "李华");
DeleteResult result = dbCol.deleteMany(doc);
System.out.println("删除了:"+result.getDeletedCount()+"\t 行.");
findAll();
}
public static void update() { //更新数据
findAll();
MongoCollection<Document> dbCol=getDatabase().getCollection("student");
BasicDBObject gt=new BasicDBObject("$gt",25);
BasicDBObject queryObject=new BasicDBObject("age",gt);
BasicDBObject updateObject=new BasicDBObject("address","上海");
UpdateResult updateResult = dbCol.updateMany(queryObject, new Document("$set",updateObject));
System.out.println("更新了"+updateResult.getModifiedCount()+"\t 行.");
findAll();
}
public static MongoClient getConnectionWithoutParams() { //与数据库服务建立连接
if(client==null) {
client = new MongoClient( "localhost" , 27017 );
System.out.println("Connect to database successfully");
}
return client;
}
public static MongoDatabase getDatabase() { //连接一个数据库
if(database==null) {
database=getConnectionWithoutParams().getDatabase("test");
}
return database;
}
}