安装、使用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.检查是否安装成功

访问:http://localhost:27017/

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("110@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, email=110@qq.com, nickName=杰, regTime=null]

测试mongodb能用,之后还会深入研究一下mongodb在python的应用和java应用中的注意事项和日志,积少成多,今天的坑到此结束了,okok!!

严肃一下!这里写图片描述

1.《国家地理》里说地球上最深的地方在太平洋的马里亚纳海沟,2016年拍了一组照片回来。最近科学家研究这些照片,发现里面有一个透明的东西,不知道是什么。最初以为那是某种未知的生物,后来确认了:那是一个塑料袋。
2.千万别上瘾只想去解决那些困难的问题。如果那些问题本身就是错的,你会浪费时间;如果你解决不了,也会浪费时间;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值