概念:MongoDB是一个基于分布式文件存储的数据库
Windows实践
下载MongoDB:www.mongodb.com/try/downloa…
下载zip包,然后解压到本地工具文件夹中
安装服务:要在安装目录里创建两个目录:data、logs
然后以管理员模式,切换到安装目录下的bin目录运行以下格式命令来指定mongdb的数据及日志目录
mongod --install --dbpath 数据目录 --logpath 日志目录\日志名称
具体的代码为如下所示:
mongod --install --dbpath D:\development_tools\mongo\mongodb-win32-x86_64-windows-7.0.4\data --logpath D:\development_tools\mongo\mongodb-win32-x86_64-windows-7.0.4\logs\mongodb.log
进行验证,win+r输入services.msc,可以看到mongoDB服务
然后在bin目录下启动目录:
net start mongodb
Java项目实践Demo
普通maven项目使用
新建一个空的maven项目,然后导入mongo的依赖:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.4.1</version>
</dependency>
然后在main方法中:
public class demo {
public static void main(String[] args) {
// 连接到MongoDB服务器
try (MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017")) {
// 选择数据库
MongoDatabase database = mongoClient.getDatabase("lzh01");
// 获取集合
MongoCollection<Document> collection = database.getCollection("lzh01");
// 插入文档
Document document = new Document("name", "wxr");
collection.insertOne(document);
// 查询文档
Document query = new Document("name", "wxr");
Document result = collection.find(query).first();
System.out.println(result);
}
}
}
分析:首先根据URL创建MongoDB 客户端,然后从其中取出对应的集合,然后新建文档,将文档加入到集合里面
在Spring中的使用
spring中首先导包:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
然后在配置文件中写连接信息:
spring:
data:
mongodb:
uri: mongodb://127.0.0.1:27017/lzh01
然后在项目中写这个的配置类:
/**
* @ClassName: mongoConfig
* @Description:
* @Author: lzh
* @Date: 2024/1/8
*/
@Configuration
@EnableMongoRepositories(mongoTemplateRef = "lzhmongoTemplate")
public class mongoConfig {
@Value("${spring.data.mongodb.uri}")
private String uri;
@Primary
@Bean(name="lzhmongoTemplate")
public MongoTemplate buildTemplate() {
return new MongoTemplate(new SimpleMongoClientDbFactory(uri));
}
}
然后在项目中注入使用:
@Resource
@Qualifier("mongoTemplateQianlima")
private MongoTemplate mongoTemplateQianlima;
然后使用MongoTemplate的实例进行操作即可(test进行测试):
@SpringBootTest
class Demo0108ApplicationTests {
@Autowired
@Qualifier("lzhmongoTemplate")
private MongoTemplate lzhmongoTemplate;
@Test
void contextLoads() {
//添加操作
ArrayList<Object> list = new ArrayList<>();
for (int i = 0; i < 20; i++) {
list.add(new Person("小红"+i , i));
}
lzhmongoTemplate.insertAll(list);
// 更新操作
Query query = new Query(Criteria.where("name").is("小红30"));
Update update = new Update()
.set("name", "小红40")
.set("age",25);
lzhmongoTemplate.updateFirst(query, update, Person.class);
//删除操作
Query deleteQuery = new Query(Criteria.where("name").is("小红40"));
lzhmongoTemplate.remove(deleteQuery, Person.class);
// 查询操作
Query findQuery = new Query(Criteria.where("age").gte(10));
List<Person> persons = lzhmongoTemplate.find(findQuery, Person.class);
for (Person person : persons) {
System.out.println(person);
}
//游标查询
Query query1 = new Query(Criteria.where("age").gte(10));
MongoCollection<Document> collection = lzhmongoTemplate.getCollection("person");
MongoCursor<Document> cursor = getMongoCursor(query1, collection);
Document doc;
while (cursor.hasNext()){
doc = cursor.next();
if(Objects.isNull(doc)){
continue;
}
String name = (String) doc.get("name");
Integer age = (Integer)doc.get("age");
System.out.println(name + age);
}
public MongoCursor<Document> getMongoCursor(Query query, MongoCollection<Document> collection) {
if (Objects.isNull(query)) {
return collection.
find()//设置游标查询不超时
.noCursorTimeout(true)
// TODO: 线上需改为10000,设置批量从数据库中获取的数据量
.batchSize(10000)
.cursor();
} else {
return collection.
find(query.getQueryObject())//设置游标查询不超时
.noCursorTimeout(true)
// TODO: 线上需改为10000,设置批量从数据库中获取的数据量
.batchSize(10000)
.cursor();
}
}
}
// 使用游标查询(第二种方法)
try (CloseableIterator<Person> cursor1 = lzhmongoTemplate.stream(query, Person.class)) {
cursor1.forEachRemaining(person -> {
// 处理每个查询到的 Person 对象
System.out.println(person);
});
}
}
mongoTemplate的基本用法
MongoClient是 MongoDB Java 驱动提供的类,用于与 MongoDB 数据库建立连接,它是根据地址和端口号创建
MongoTemplate是 Spring Data MongoDB 提供的高级模板,它封装了MongoClient的底层细节,简化了 MongoDB 操作的流程。它是根据MongoClient来创建的
MongoTemplate 是 Spring Data MongoDB 提供的一个类,用于在 Spring 应用程序中与 MongoDB 进行交互。它是 MongoDB 操作的高级模板,简化了在 Java 中执行各种 MongoDB 操作的步骤。
下面是它的使用:
插入数据:
YourEntity yourEntity = new YourEntity();
// 设置实体的属性
mongoTemplate.insert(yourEntity);
这个插入方法会往MongoDB 中的一个数据库中的一个集合插入数据,数据库是你在配置文件中指定的(未指定则默认),同样集合如果没有显式的指定,则是你的实体类 YourEntity 的注解或者默认命名规则
更新数据:
Query query = new Query(Criteria.where("field").is("value"));
Update update = new Update().set("fieldToUpdate", "updatedValue");
mongoTemplate.updateFirst(query, update, YourEntity.class);
查询数据:
Query query = new Query(Criteria.where("field").is("value"));
List<YourEntity> result = mongoTemplate.find(query, YourEntity.class);
删除数据:
Query query = new Query(Criteria.where("field").is("value"));
mongoTemplate.remove(query, YourEntity.class);
Compass图形化连接登录
下载图形化管理工具:
下载地址:www.mongodb.com/try/downloa…
直接安装,然后直接点击CONNECT就会连接本地的数据库localhost:27017