基于mac开发,先记录环境安装
安装mongodb
使用home-brew安装mongodb
brew install mongoldb
修改环境变量
把mongodb/bin加入$PATH ,以免我们每次输入sudo monogd ,变成直接monogd
//新建
touch .base_profile
//编辑
vim .base_profile
//内容:可能每个人安装的位置不一样
export MONGO_PATH=/usr/local/opt/mongodb
export PATH=$PATH:$MONGO_PATH/bin
启动mongodb服务端:
mongod --config /usr/local/etc/mongod.conf
(注:mongod.conf文件中bindIp: 127.0.0.1意思是本机访问,如果是外网访问需要重新设置)
如果要修改数据库路径的话,终端输入 mongod --dbpath 路径
此时,可以通过http访问该数据库,mongodb使用了27017端口,因此在浏览器中打开
。
出现如下提示即说明连接成功了。
It looks like you are trying to access MongoDB over HTTP on the native driver port.
mongodb使用
为连接mongodb服务端,终端输入命令mongo
bogon:~ wwr$ mongo
MongoDB shell version v4.0.3
connecting to: mongodb://127.0.0.1:27017
Implicit session: session { "id" : UUID("5a63428d-65ce-4e1c-848c-2f310f462e10") }
MongoDB server version: 4.0.3
Server has startup warnings:
2018-12-05T11:15:23.821+0800 I CONTROL [initandlisten]
2018-12-05T11:15:23.821+0800 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-12-05T11:15:23.821+0800 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
2018-12-05T11:15:23.822+0800 I CONTROL [initandlisten]
2018-12-05T11:15:23.822+0800 I CONTROL [initandlisten]
2018-12-05T11:15:23.822+0800 I CONTROL [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
查看目前连接的数据库:默认连接的是test数据库
> db
test
查看有多少数据库
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
test 0.000GB
插入数据(往users表中插入一条数据,没有表的话就会默认创建):
> db.users.insert({user:"admin",pwd:"124"})
WriteResult({ "nInserted" : 1 })
查看表:
> show tables
userBehaviorAnalysis
users
查看数据
> db.users.find()
{ "_id" : ObjectId("5c06252ebcc4fe867ffc590d"), "userid" : "admin", "password" : "123" }
{ "_id" : ObjectId("5c08949dabc6a298382cb710"), "user" : "admin", "pwd" : "124" }
创建/切换database
> use mongo1-db
switched to db mongo1-db
退出
exit
bye
参考:
菜鸟教程: http://www.runoob.com/mongodb/mongodb-tutorial.html
简书:https://www.jianshu.com/p/2d0a1ecd0c82
接下来记录一下项目集成
Spring boot集成:
pom配置:
<!-- mongodb -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<scope>provided</scope>
</dependency>
yml文件添加配置,不用加配置也可以,Spring boot的自动配置默认已经配置好了,默认用的就是mongodb的test数据库,端口用的是27017
# ybl 是自定义数据库
spring:
data:
mongodb:
authentication-database:
database: ybl
host: localhost
port: 27017
uri: mongodb://localhost/ybl
实体类正常写:
@Data
@Document(collection = "user_behavior")
public class UserBehaviorAnalysis {
@Id
private String id;
private String userId; // 用户id
@Document(collection = “user_behavior”)指定使用ybl数据库中的user_behavior表进行数据存储。
@Id注解作用于mongodb使用
其他正常。
mapper写法:
//继承MongoRepository,MongoRepository提供了很多通用的方法
@Repository
public interface UserBehaviorAnalysisMapper extends MongoRepository<UserBehaviorAnalysis, String> {
测试:
@Autowired
private UserBehaviorAnalysisMapper userBehaviorAnalysisMapper;
@Test
public void addTest(){
UserBehaviorAnalysis userBehaviorAnalysis = new UserBehaviorAnalysis();
userBehaviorAnalysis.setUserId("124");
userBehaviorAnalysis.setUserAgent("用户设备信息");
UserBehaviorAnalysis insert = userBehaviorAnalysisMapper.insert(userBehaviorAnalysis);
System.out.println(insert);
}
接口完事儿之后遇到跨域问题:前后端分离下跨域问题:
这位博主分析的很详细:https://www.cnblogs.com/mashch/articles/4261448.html
springmvc跨域解决:(cors方式)
<!-- spring4.X跨域支持 -->
<mvc:cors>
<mvc:mapping path="/**" allowed-origins="*" allow-credentials="true" max-age="1800" allowed-methods="GET,POST,OPTIONS"/>
</mvc:cors>
spring boot项目跨域解决:(在启动类中配置)
post方式请求403分析: https://www.jianshu.com/p/2e93f14e1807
/**
* @return: org.springframework.web.cors.CorsConfiguration
* @Author: wwr
* @Date: 2018/12/7
*/
private CorsConfiguration buildConfig(){
CorsConfiguration configuration = new CorsConfiguration();
configuration.addAllowedOrigin("*");
configuration.addAllowedHeader("*");
configuration.addAllowedMethod("*");
return configuration;
}
/**
* @Description: 服务端cors跨域支持
* @return: org.springframework.web.filter.CorsFilter
* @Author: wwr
* @Date: 2018/12/7
*/
@Bean
public CorsFilter corsFilter(){
log.info("===============设置跨域过滤器==================");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**",buildConfig());
return new CorsFilter(source);
}
查看了这位博主的文章,对Spring boot对mongodb的自动配置做了源码的说明
以上仅做记录。