java操作mongoDB数据库
public class MongoDBTest {
@Test
public void mongoDBTest(){
//连接MongoDB服务
MongoClient mongoClient = new MongoClient("localhost",27017);
//连接到MongoDB数据库
MongoDatabase database = mongoClient.getDatabase("mongo");
//选择集合
MongoCollection<Document> collection = database.getCollection("mongo");
//查询所有文档内容
FindIterable<Document> documents = collection.find();
for (Document document : documents) {
System.out.println(document);
}
// 插入文档
/**
* 1. 创建文档 org.bson.Document 参数为key-value的格式
* 2. 创建文档集合List<Document>
* 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>)
* 插入单个文档可以用 mongoCollection.insertOne(Document)
*/
Document document = new Document();
document.append("description", "database").append("likes", 100).append("by", "Fly");
List<Document> documents1 = new ArrayList<>();
documents1.add(document);
collection.insertMany(documents1);
FindIterable<Document> documents2 = collection.find();
for (Document document1 : documents2) {
System.out.println(document1);
}
//更新文档
collection.updateMany(Filters.eq("likes", 100), new Document("$set",new Document("likes",200)));
删除符合条件的第一个文档
collection.deleteOne(Filters.eq("likes", 200));
// 删除所有符合条件的文档
collection.deleteMany (Filters.eq("likes", 200));
// 检索查看结果
System.out.println("-------------------------------");
FindIterable<Document> findIterable = collection.find();
MongoCursor<Document> mongoCursor = findIterable.iterator();
while(mongoCursor.hasNext()){
System.out.println(mongoCursor.next());
}
}
//这个方法是对MongoDB数据库的一些数据的具体操作。注释只是为了命名时方便一些
@Test
public void selectTest(){
//连接MongoDB数据库
MongoClient mongoClient = new MongoClient("localhost",27017);
//连接到数据库
MongoDatabase database = mongoClient.getDatabase("mongo");
//获取集合
MongoCollection<Document> collection = database.getCollection("list");
//查询所有数据
// FindIterable<Document> documents = collection.find();
// for (Document document : documents) {
// System.out.println(document);
// }
//查找女歌星
// FindIterable<Document> documents = collection.find(Filters.eq("sex", "女"));
// for (Document document : documents) {
// System.out.println(document);
// }
//查找年龄大于53的歌星。
// FindIterable<Document> documents = collection.find(Filters.gt("age",53));
// for (Document document : documents) {
// System.out.println(document);
// }
//查询年龄小于35岁的歌星。
// FindIterable<Document> documents = collection.find(Filters.lt("age", 35));
// for (Document document : documents) {
// System.out.println(document);
// }
//查询成绩大于等于95的歌星。
// FindIterable<Document> documents = collection.find(Filters.gte("score", 95));
// for (Document document : documents) {
// System.out.println(document);
// }
//查询年龄在小于等于32岁的歌星。
// FindIterable<Document> documents = collection.find(Filters.lte("age", 32));
// for (Document document : documents) {
// System.out.println(document);
// }
//查找年龄在30-40岁之间的歌星。
// BasicDBObject basicDBObject = new BasicDBObject();
// basicDBObject.put("$gt",30);
// basicDBObject.put("$lt",40);
// BasicDBObject basicDBObject1 = new BasicDBObject();
// basicDBObject1.put("age",basicDBObject);
// FindIterable<Document> documents = collection.find(basicDBObject1);
// for (Document document : documents) {
// System.out.println(document);
// }
//查询外国歌手。
// FindIterable<Document> documents = collection.find(Filters.ne("country", "中国"));
// for (Document document : documents) {
// System.out.println(document);
// }
//查询成绩为5 、15、25、。。。。95的歌星。条件相当于key % 10 == 5 即key除以10余数为5的
// FindIterable<Document> documents = collection.find(Filters.mod("score", 10, 5));
// for (Document document : documents) {
// System.out.println(document);
// }
//查询序号(num)为3或者6或者9的歌星。
// FindIterable<Document> documents = collection.find(Filters.in("num", "3","6","9"));
// for (Document document : documents) {
// System.out.println(document);
// }
//查询国籍不为美国和韩国的歌手。
// FindIterable<Document> documents = collection.find(Filters.nin("country", "美国", "韩国"));
// for (Document document : documents) {
// System.out.println(document);
// }
//查询包含tel字段的数据。
// FindIterable<Document> documents = collection.find(Filters.exists("name", true));
// for (Document document : documents) {
// System.out.println(document);
// }
// BasicDBObject basicDBObject = new BasicDBObject();
// basicDBObject.put("age",55);
// FindIterable<Document> documents = collection.find(Filters.or(basicDBObject));
// for (Document document : documents) {
// System.out.println(document);
}
}
}
mongo实例其实已经是一个现成的连接池了,而且线程安全。这个内置的连接池默认初始了10个连接,每一个操作(增删改查等)都会获取一个连接,执行操作后释放连接。