import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoCollection;
import org.bson.Document;
import java.util.Arrays;
import com.mongodb.Block;
import com.mongodb.client.MongoCursor;
import static com.mongodb.client.model.Filters.*;
import com.mongodb.client.result.DeleteResult;
import static com.mongodb.client.model.Updates.*;
import com.mongodb.client.result.UpdateResult;
import java.util.ArrayList;
import java.util.List;
//http://mongodb.github.io/mongo-java-driver/3.4/driver/getting-started/quick-start/
public class MongoTest {
public static void main(String[] args) {
/*MongoClient mongoClient = new MongoClient( “localhost” );
MongoClient mongoClient = new MongoClient( “localhost” , 27017 );
MongoClientURI connectionString = new MongoClientURI(“mongodb://localhost:27017”);
MongoClient mongoClient = new MongoClient(connectionString);
*/
// MongoClient mongoClient = new MongoClient();
// 连接副本集
/*MongoClient mongoClient = new MongoClient(new MongoClientURI(
"mongodb://host1:27017,host2:27017,host3:27017"));
MongoClient mongoClient = new MongoClient(
new MongoClientURI(
"mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myReplicaSet"));
MongoClient mongoClient = new MongoClient(
Arrays.asList(new ServerAddress("host1", 27017),
new ServerAddress("host2", 27017),
new ServerAddress("host3", 27017)));*/
// 连接分片
/* MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://localhost:27017"));
MongoClient mongoClient = new MongoClient(
new MongoClientURI("mongodb://host1:27017,host2:27017"));
MongoClient mongoClient = new MongoClient(
Arrays.asList(new ServerAddress("host1", 27017),
new ServerAddress("host2", 27017)));*/
// 连接设置
// TLS/SSL认证方式1
/*MongoClientURI uri = new MongoClientURI(
"mongodb://user1:pwd1@host1/?authSource=db1&ssl=true");
MongoClient mongoClient = new MongoClient(uri);*/
// 方式2
MongoCredential credential = MongoCredential.createCredential("user",
"database", "password".toCharArray());
MongoClientOptions options = MongoClientOptions.builder()
.sslEnabled(true).build();
MongoClient mongoClient = new MongoClient(new ServerAddress("host1",
27017), Arrays.asList(credential), options);
MongoDatabase database = mongoClient.getDatabase("mydb");
MongoCollection<Document> collection = database.getCollection("test");
// 创建document
Document doc = new Document("name", "MongoDB")
.append("type", "database").append("count", 1)
.append("versions", Arrays.asList("v3.2", "v3.0", "v2.6"))
.append("info", new Document("x", 203).append("y", 102));
collection.insertOne(doc);
// 插入多个文档
List<Document> documents = new ArrayList<Document>();
for (int i = 0; i < 100; i++) {
documents.add(new Document("i", i));
}
collection.insertMany(documents);
System.out.println(collection.count());
// 获取第一个文档
Document myDoc = collection.find().first();
System.out.println(myDoc.toJson());
// 使用迭代器迭代所有文档
MongoCursor<Document> cursor = collection.find().iterator();
try {
while (cursor.hasNext()) {
System.out.println(cursor.next().toJson());
}
} finally {
cursor.close();
}
for (Document cur : collection.find()) {
System.out.println(cur.toJson());
}
// 指定查询
myDoc = collection.find(eq("i", 71)).first();
System.out.println(myDoc.toJson());
// 获取与文档匹配的所有文档 i > 50
Block<Document> printBlock = new Block<Document>() {
@Override
public void apply(final Document document) {
System.out.println(document.toJson());
}
};
collection.find(gt("i", 50)).forEach(printBlock);
// 指定范围50<i<=100
collection.find(and(gt("i", 50), lte("i", 100))).forEach(printBlock);
// i=10的文档i设置为110
collection.updateOne(eq("i", 10), new Document("$set", new Document(
"i", 110)));
// i<100所有文档增100
UpdateResult updateResult = collection.updateMany(lt("i", 100),
inc("i", 100));
System.out.println(updateResult.getModifiedCount());
collection.deleteOne(eq("i", 110));
DeleteResult deleteResult = collection.deleteMany(gte("i", 100));
System.out.println(deleteResult.getDeletedCount());
// 创建索引,升序1,降序-1
collection.createIndex(new Document("i", 1).append("name", 1));
mongoClient.close();
}
}