安装、使用mongodb踩过的坑
轻松一下
没用分布式架构之前,你只有一个问题:并发性能不足。用了分布式架构,多出了一堆问题:数据如何同步、主键如何产生、如何熔断、分布式事务如何处理……
使用mongodb踩过的坑
今天对安装,使用mongodb踩过的坑做一个记录,以免以后忘了。
1. 安装mongodb
学习新技术总是要学习最新版本的,我到官网上下载了mongodb-win32-x86_64-2008plus-ssl-3.6.3-signed.msi,结果安装总是卡住,一晚上都没有安装起,查资料推荐安装mongodb-win32-x86_64-2008plus-ssl-3.2.10-signed.msi。
2. 开启服务
最开始开启服务没有在cmd命令行添加“”,导致服务没有开启,正确的开启方式:
mongod –dbpath “C:\Program Files\MongoDB\Server\3.2\data” –logpath “C:\Program Files\MongoDB\Server\3.2\log\mongodb.log”
3.检查是否安装成功
4.创建服务,方便开启
4.1创建服务
在mongodb/bin中执行:
mongod.exe –logpath “C:\Program Files\MongoDB\Server\3.2\log\mongodb.log” –logappend –dbpath “C:\Program Files\MongoDB\Server\3.2\data” –directoryperdb –serviceName MongoDB –install
4.2删除服务
如果不用mongodb服务,执行: sc delete MongoDB
4.3添加服务启动不起,不要慌
在mongodb安装路径下data文件中有两个文件一个mongod.lock和storage.bson,一般删除mongod.lock就可以了,如果服务错误代码100还不能解决,就把storage.bson一起删掉再启动就可以了!
5.代码验证(spring boot)
5.1 在application.properties配置文件中添加mongodb的配置:
mongodb
spring.data.mongodb.uri=mongodb://root(userName):root(password)@localhost(ip地址):27017(端口号)/gis(collections/数据库)
spring.data.mongodb.uri=mongodb://localhost:27017/test //默认的时候直接使用
5.1:创建实体类
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private Long id;
private String userName;
private String passWord;
private String email;
private String nickName;
private String regTime;
5.2 mongodb的接口
public interface UserMongoDao {
void saveUser(User user);
User findUserByUserName(String userName);
void updateUser(User user);
void deleteUserById(Long id);
}
5.3 mongodb的dao层
package com.api.allApi.dao.mongo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import com.api.allApi.entity.User;
@Component
public class UserMongoDaoImp implements UserMongoDao {
@Autowired
private MongoTemplate mongoTemplate;
/**
* 创建对象
* @param user
*/
@Override
public void saveUser(User user) {
mongoTemplate.save(user);
}
/**
* 根据用户名查询对象
* @param userName
* @return
*/
@Override
public User findUserByUserName(String userName) {
Query query=new Query(Criteria.where("userName").is(userName));
User user = mongoTemplate.findOne(query , User.class);
return user;
}
}
5.4.测试
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.api.allApi.dao.mongo.UserMongoDao;
import com.api.allApi.entity.User;
@RunWith(SpringRunner.class)
@SpringBootTest
public class MongoDBTest {
@Autowired
private UserMongoDao userMongoDao;
@Test
public void saveUser() {
User user = new User();
user.setEmail("aaa@qq.com");
user.setId((long) 10);
user.setNickName("杰");
user.setPassWord("89h");
user.setUserName("bala杰");
userMongoDao.saveUser(user);
}
@Test
public void queryUserByName() {
User user = userMongoDao.findUserByUserName("bala杰");
System.out.println(user);
}
}
输出结果:
User [id=10, userName=bala杰, passWord=89h, aaa@qq.com, nickName=杰, regTime=null]
测试mongodb能用,之后还会深入研究一下mongodb在python的应用和java应用中的注意事项和日志,积少成多,今天的坑到此结束了,okok!!
严肃一下!
1.《国家地理》里说地球上最深的地方在太平洋的马里亚纳海沟,2016年拍了一组照片回来。最近科学家研究这些照片,发现里面有一个透明的东西,不知道是什么。最初以为那是某种未知的生物,后来确认了:那是一个塑料袋。
2.千万别上瘾只想去解决那些困难的问题。如果那些问题本身就是错的,你会浪费时间;如果你解决不了,也会浪费时间;
下一篇: TCP协议的三次握手和四次分手