package com.example.demo.testmongo;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
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 org.bson.Document;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class MongoTest {
public static void main(String[] args) {
try {
// 1)连接到 mongo 服务,无密码和用户名
MongoClient mongoClient = new MongoClient("localhost", 27017);
/*
// 2) 需要用户名和密码连接集群服务
MongoCredential credential = MongoCredential.createCredential("hurw", "hurw", "123456".toCharArray());
MongoClient mongo = new MongoClient(
Arrays.asList(new ServerAddress("10.4.0.1", 27017),
new ServerAddress("10.4.0.2", 27017),
new ServerAddress("10.4.0.3", 27017),
new ServerAddress("10.4.0.4", 27017),
new ServerAddress("10.4.0.5", 27017)),
Arrays.asList(credential));
*/
System.out.println("Connect to database successfully");
// 获取数据库名
MongoDatabase mongoDatabase = mongoClient.getDatabase("hurw");
// 创建 collection
mongoDatabase.createCollection("test");
// (增)插入文档
MongoCollection<Document> collection = mongoDatabase.getCollection("test");
Document document = new Document();
// 以下两种办法都可以加入元素
document.append("name","hurw");
document.put("age",18);
List<Document> documentList = new ArrayList<>();
documentList.add(document);
collection.insertMany(documentList);
// (查)遍历文档
MongoCollection<Document> collection1 = mongoDatabase.getCollection("test");
// 获取迭代器FindIterable<Document>
FindIterable<Document> findIterable = collection1.find();
// 获取游标MongoCursor<Document>
MongoCursor<Document> mongoCursor = findIterable.iterator();
while (mongoCursor.hasNext()){
System.out.println(mongoCursor.next());
}
// 查询条件
Document query = new Document("first_ip_addr", new Document("$lte", ipl)).append("last_ip_addr", new Document("$gte", ipl));
FindIterable<Document> findIterable1 = collection1.find(query);
MongoCursor<Document> mongoCursor1 = findIterable1.iterator();
while (mongoCursor1.hasNext()) {
Document document1 = mongoCursor1.next();
document1.get("XXX");
}
// 遍历文档的另一种方式:
String url = "mongodb://10.40.20.20:27017/admin";
MongoClientURI mongoClientUri = new MongoClientURI(url);
MongoClient mongoclient = new MongoClient(mongoClientUri);
MongoCollection collection = mongoclient.getDatabase(dbName).getCollection (collectionName);
Bson filter1 = Filters.eq("id",1);
FindIterable<Document> findIterable = collection.find(filter1);
MongoCursor<Document> mongoCursor = findIterable.iterator();
while (mongoCursor.hasNext()){
Document document = mongoCursor.next();
int netId = Integer.valueOf(document.get("id").toString());
....
}
// (改)更新/修改元素
collection.updateMany(Filters.eq("age",18),
new Document("$set",new Document("age",22)));
// 修改后再遍历
MongoCollection<Document> collection2 = mongoDatabase.getCollection("test");
// 获取迭代器FindIterable<Document>
FindIterable<Document> findIterable1 = collection2.find();
// 获取游标MongoCursor<Document>
MongoCursor<Document> mongoCursor1 = findIterable1.iterator();
while (mongoCursor1.hasNext()){
System.out.println(mongoCursor1.next());
}
// (删)删除元素
collection1.deleteOne(Filters.eq("age",22));
collection1.deleteMany(Filters.eq("name","hurw"));
}catch (Exception e) {
e.printStackTrace();
}
}
}
MongoDB 备份(mongodump)与恢复(mongorestore)