MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase database = mongoClient.getDatabase("study");
System.out.println("connection mongoDB successfully");
System.out.println("this db is : "+database.getName());
执行下面代码,看到执行成功,并输出当前选择的数据库
除了上述连接方式,还有如下几种,不加以用代码展示
默认认证机制:
String user; // the user name
String database; // the name of the database in which the user is defined
char[] password; // the password as a character array
// ...
MongoCredential credential = MongoCredential.createCredential(user, database, password);
MongoClient mongoClient = new MongoClient(new ServerAddress("host1", 27017),
Arrays.asList(credential));
使用连接字符串而不明确指定认证机制:
MongoClientURI uri = new MongoClientURI("mongodb://user1:pwd1@host1/?authSource=db1");
MongoClient mongoClient = new MongoClient(uri);
对集合进行操作
getCollection()方法可以指定某一个集合,并对该集合来进行操作
listCollectionNames() 方法可以列出当前库下的所有集合
//连接客户端
MongoClient mongoClient = new MongoClient("localhost", 27017);
//选择数据库
MongoDatabase database = mongoClient.getDatabase("test");
System.out.println("connection mongoDB successfully");
System.out.println("this db is : "+database.getName());
//获取某一个集合
MongoCollection<Document> collection = database.getCollection("mongo-study");
//获取改库的所有集合并且打印
MongoIterable<String> strings = database.listCollectionNames();
for (String string : strings) {
System.out.println(string);
}
MongoDatabase test = getDataBase("test");
MongoCollection<Document> study = test.getCollection("newCollection");
FindIterable<Document> documents = study.find();
for (Document document1 : documents) {
System.out.println("删除前"+document1);
}
study.findOneAndDelete(eq("_id", 2016));
for (Document document1 : documents) {
System.out.println("删除后"+document1);
}
}
查询文档
1、一个条件精准查询
@Test
public void findDocument() {
MongoDatabase test = getDataBase("test");
MongoCollection<Document> study = test.getCollection("newCollection");
//查询所有
FindIterable<Document> documents = study.find();
//封装查询对象
BasicDBObject query = new BasicDBObject();
//存入键值对,键是指文档的键,值是你需要匹配的值
query.put("title","插入文档1");
FindIterable<Document> result = study.find(query);
for (Document document : result) {
System.out.println("查询的结果"+document);
}
}
执行结果如下图
2、多条件查询
查询likes大于30且by=java 数据
@Test
public void findDocumentBetween() {
MongoDatabase test = getDataBase("test");
MongoCollection<Document> study = test.getCollection("newCollection");
//查询所有
FindIterable<Document> documents = study.find();
for (Document document : documents) {
System.out.println(document);
}
//封装查询对象
BasicDBObject query = new BasicDBObject();
//查找条件是小于30
//比较符
//"$gt": 大于
//"$gte":大于等于
//"$lt": 小于
//"$lte":小于等于
//"$in": 包含
BasicDBObject more= new BasicDBObject("$gt", 30);
//存入键值对,键是指文档的键,值是你需要匹配的值
query.put("likes",more);
query.put("by","java");
FindIterable<Document> result = study.find(query);
for (Document document : result) {
System.out.println("查询的结果"+document);
}
}
输出结果
3、区间查询
eg 查询likes > 50 的数据
@Test
public void findDocumentBetween() {
MongoDatabase test = getDataBase("test");
MongoCollection<Document> study = test.getCollection("newCollection");
//查询所有
FindIterable<Document> documents = study.find();
for (Document document : documents) {
System.out.println(document);
}
BasicDBObject query = new BasicDBObject();
query = new BasicDBObject();
query.put("likes", new BasicDBObject("$gt", 50)); // e.g. find all where i >
FindIterable<Document> result = study.find(query);
for (Document document : result) {
System.out.println("查询的结果"+document);
}
}
执行结果
4、分页查询和模糊查询
/**
* 分页查询
*/
@Test
public void findDocumentBetween() {
MongoDatabase test = getDataBase("test");
MongoCollection<Document> study = test.getCollection("newCollection");
//查询所有的前四条
FindIterable<Document> documents = study.find().skip(0).limit(4);
for (Document document : documents) {
System.out.println(document);
}
BasicDBObject query = new BasicDBObject();
query = new BasicDBObject();
query.put("likes", new BasicDBObject("$gt", 30)); // e.g. find all where i >
//查询likes>30的数据中的前两条数据
FindIterable<Document> result = study.find(query).skip(0).limit(2);
for (Document document : result) {
System.out.println("查询的结果"+document);
}
}
/**
* 模糊查询
*/
@Test
public void findDocumentBetween() {
MongoDatabase test = getDataBase("test");
MongoCollection<Document> study = test.getCollection("newCollection");
//查询所有的前四条
FindIterable<Document> documents = study.find().skip(0).limit(4);
for (Document document : documents) {
System.out.println(document);
}
BasicDBObject query = new BasicDBObject();
Pattern compile = Pattern.compile("插入文?");
query.put("title", compile); // e.g. find all where title like
//查询title like 插入文 的数据中的前两条数据
FindIterable<Document> result = study.find(query).skip(0).limit(2);
for (Document document : result) {
System.out.println("查询的结果" + document);
}
}
5、或查询
@Test
public void test01(){
MongoDatabase test = getDataBase("test");
MongoCollection<Document> study = test.getCollection("newCollection");
QueryBuilder query = new QueryBuilder();
//where likes = 30 or title = 插入文档1
query.or(new BasicDBObject("likes", 20), new BasicDBObject("title", "插入文档1"));
FindIterable<Document> documents = study.find((Bson) query.get());
for (Document document : documents) {
System.out.println(document);
}
}
执行结果
6、in查询
@Test
public void test01(){
MongoDatabase test = getDataBase("test");
MongoCollection<Document> study = test.getCollection("newCollection");
BasicDBList values = new BasicDBList();
values.add(10);
values.add(20);
values.add(30);
BasicDBObject in = new BasicDBObject("$in", values);
//where likes in ()
FindIterable<Document> likes = study.find(new BasicDBObject("likes", in));
for (Document document : likes) {
System.out.println(document);
}
}