-
导入jar包
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.4.2</version>
</dependency> -
连接MongoDB
实例化一个没有任何连接参数的MongoClient对象,可以连接到运行在本地主机的27017端口
MongoClient mongoClient = new MongoClient();
我们也可以连接到指定主机的27017端口
MongoClient mongoClient = new MongoClient("localhost");
指定主机和端口
MongoClient mongoClient = new MongoClient("localhost", 27017);
指定MongoClientURI
MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://localhost:27017"));
-
获得数据库和集合
连接到test库
MongoDatabase database = mongoClient.getDatabase("test");
获得users集合
MongoCollection<Document> collection = database.getCollection("users");
-
查询文档
用来打印查询结果
Block<Document> printBlock = new Block<Document>() {
@Override
public void apply(Document document) {
System.out.println(document.toJson());
}
};查询所有文档
collection.find().forEach(printBlock); collection.find(new Document()).forEach(printBlock);
复合查询
collection.find(eq("name", "sue")).forEach(printBlock); // 通过过滤器查询 collection.find(and(gte("age", 20), lt("age", 30), eq("type", 2))).forEach(printBlock); // 通过Filters 过滤 collection.find(new Document("age", new Document("$gte", 20).append("$lt", 30)).append("type", 2)).forEach(printBlock); // 通过 filter document 过滤
返回指定的查询字段
collection.find().projection(new Document("name", 1).append("age", 1).append("type", 1).append("_id", 0)).forEach(printBlock); // 通过.projection()指定返回的字段 collection.find().projection(fields(include("name", "age", "type"), excludeId())).forEach(printBlock); // 通过Projections类过滤
排序
collection.find().sort(Sorts.ascending("name")).forEach(printBlock); // 通过.sort() Sorts类排序
-
增加文档
插入一条数据
Document document = new Document("name", "webb")
.append("age", 24)
.append("type", 1)
.append("status", "A")
.append("favorites", new Document("sports", "run").append("food", "photo")); collection.insertOne(document); // 插入一条数据插入多条数据
Document document2 = new Document("name", "lebo")
.append("age", 24)
.append("type", 1)
.append("status", "A")
.append("favorites", new Document("sports", "run").append("food", "photo")); List<Document> documents = new ArrayList<>();
documents.add(document);
documents.add(document2);
collection.insertMany(documents); // 插入多条数据 -
更新文档
修改单个文档
collection.updateOne(eq("name", "abc"), combine(set("age", 24), set("status", "B")));
修改多个文档
collection.updateMany(eq("name", "webb"), combine(set("age", 23), set("type", 2)));
如果upsert为true的话,没有匹配到查询条件,就会插入一条。
collection.updateOne(eq("name", "wenboxu"), combine(set("age", 24)), new UpdateOptions().upsert(true));
替换一条记录
collection.replaceOne(eq("name", "wenboxu"), new Document("age", "22").append("name", "wenboxu"));
-
删除文档
删除单个文档
collection.deleteOne(eq("name", "webb"));
删除多个文档
collection.deleteMany(eq("age", 22));
删除所有文档
collection.deleteMany(new Document());
相关文章
- mongodb3.0分片及java代码连接操作测试(开启用户验证)
- Mongodb入门并使用java操作Mongodb
- [转]MongoDB for Java】Java操作MongoDB
- Mongodb快速入门之使用Java操作Mongodb
- 【MongoDB for Java】Java操作MongoDB
- Java操作Mongodb(转载)
- [转载]使用Java操作Mongodb
- java mongodb 基础系列---查询,排序,limit,$in,$or,输出为list,创建索引,$ne 非操作
- MongoDB快速入门笔记(八)之MongoDB的java驱动操作代码讲解
- 使用find() - 使用投影的方法使用mongodb java驱动程序3.4检索数据