Java操作MongoDB基础
目录
- MongoDB入门
- Java连接MongoDB
- MongoDB查询操作
- 查询所有记录
- 条件查询
- 多条件查询
- 分页查询
- MongoDB排序操作
- 正序排序
- 倒序排序
- Java输出MongoDB查询结果为List
MongoDB入门
MongoDB是一种基于文档的、面向文档的NoSQL数据库管理系统。与传统的关系型数据库相比,MongoDB有更高的灵活性和可伸缩性。
MongoDB将数据存储在BSON格式的文档中,每个文档类似于关系型数据库中的一行数据。MongoDB使用类似JSON的语法来查询文档,并提供了多种方式进行查询和操作。
Java连接MongoDB
在Java程序中连接MongoDB,需要下载mongodb-java-driver.jar,然后通过Java代码进行连接。
public class MongoDB {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
System.out.println("Connect to database successfully");
mongoClient.close();
}
}
上述代码中,首先创建一个MongoClient对象,参数为MongoDB所在的服务器IP和端口号。然后调用MongoClient对象的getDatabase方法,获取指定的数据库名称。
MongoDB查询操作
查询所有记录
查询所有MongoDB中的记录,可以使用find()方法。
public class MongoDB {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
MongoCollection collection = mongoDatabase.getCollection("user");
System.out.println("Collection sampleCollection selected successfully");
FindIterable cursor = collection.find();
for (Document doc : cursor) {
System.out.println(doc.toJson());
}
mongoClient.close();
}
}
上述代码中,首先创建一个MongoCollection对象,参数为要查询的集合名称。然后调用MongoCollection对象的find()方法,获取所有记录。最后通过for循环遍历所有记录,使用toJson()方法输出每条记录。
条件查询
查询符合指定条件的记录,可以使用Filters类中的方法作为参数,传递给find()方法。
public class MongoDB {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
MongoCollection collection = mongoDatabase.getCollection("user");
System.out.println("Collection sampleCollection selected successfully");
FindIterable cursor =
collection.find(Filters.eq("age", 20));
for (Document doc : cursor) {
System.out.println(doc.toJson());
}
mongoClient.close();
}
}
上述代码中,使用Filters.eq("age", 20)表示查询age等于20的记录。
多条件查询
查询符合多个条件的记录,可以使用Filters类的多个方法组合。
public class MongoDB {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
MongoCollection collection = mongoDatabase.getCollection("user");
System.out.println("Collection sampleCollection selected successfully");
FindIterable cursor =
collection.find(
Filters.and(
Filters.eq("age", 20),
Filters.eq("gender", "male")
)
);
for (Document doc : cursor) {
System.out.println(doc.toJson());
}
mongoClient.close();
}
}
上述代码中,使用Filters.and方法将多个查询条件进行组合。
分页查询
MongoDB中的分页查询,可以使用skip()和limit()方法。
public class MongoDB {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
MongoCollection collection = mongoDatabase.getCollection("user");
System.out.println("Collection sampleCollection selected successfully");
int pageNo = 2;
int pageSize = 3;
List list = collection
.find()
.skip((pageNo - 1) * pageSize)
.limit(pageSize)
.into(new ArrayList<>());
for (Document doc : list) {
System.out.println(doc.toJson());
}
mongoClient.close();
}
}
上述代码中,首先定义分页查询的页码pageNo和每页数据量pageSize。然后使用skip()方法跳过(pageNo - 1) * pageSize条数据,使用limit()方法获取pageSize条数据。最后使用into()方法将查询结果转换为List
MongoDB排序操作
正序排序
MongoDB中的排序操作,可以使用sort()方法。
public class MongoDB {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
MongoCollection collection = mongoDatabase.getCollection("user");
System.out.println("Collection sampleCollection selected successfully");
FindIterable cursor =
collection.find()
.sort(Sorts.ascending("age"));
for (Document doc : cursor) {
System.out.println(doc.toJson());
}
mongoClient.close();
}
}
上述代码中,使用Sorts.ascending("age")表示按age字段的正序排序。默认情况下,sort()方法默认按照升序排序。
倒序排序
倒序排序,可以使用Sorts.descending()方法。
public class MongoDB {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
MongoCollection collection = mongoDatabase.getCollection("user");
System.out.println("Collection sampleCollection selected successfully");
FindIterable cursor =
collection.find()
.sort(Sorts.descending("age"));
for (Document doc : cursor) {
System.out.println(doc.toJson());
}
mongoClient.close();
}
}
上述代码中,使用Sorts.descending("age")表示按age字段的倒序排序。
Java输出MongoDB查询结果为List
将MongoDB中查询的结果输出为List,可以使用into()方法。
public class MongoDB {
public static void main(String[] args) {
MongoClient mongoClient = new MongoClient("localhost", 27017);
MongoDatabase mongoDatabase = mongoClient.getDatabase("test");
MongoCollection collection = mongoDatabase.getCollection("user");
System.out.println("Collection sampleCollection selected successfully");
List list = collection.find().into(new ArrayList<>());
for (Document doc : list) {
System.out.println(doc.toJson());
}
mongoClient.close();
}
}
上述代码中,使用into()方法将查询结果转换为List