关于mongodb:总结本周遇到的问题

35次阅读

共计 2341 个字符,预计需要花费 6 分钟才能阅读完成。

问题一 后盾我的项目无奈新建 java 类并且注解为灰色:

当我像平常一样通过作为我的项目关上 pom.xml 时发现关上后只显示这些文件

于是我尝试间接关上我的项目文件夹,关上之后发现所有注解都是灰色的

并且在新建里没有新建 java 类这一项。
然而通过运行 mvn spring-boot:run 却发现可能失常运行。
在网上查找材料发现这和 maven 无关。
并且发现通过这样关上右侧没有 maven 这一栏,这也就阐明须要增加 maven 我的项目,在网上搜寻相应办法后只需全局搜寻 maven 并将 pom.xml 作为 maven 我的项目增加即可。

然而对于为什么会触发这样的问题,在其余我的项目中依照之前的打开方式就没有问题,还没有找到很好的解释。

问题二 Docker 装置 MongoDB:

抉择装置最新版本

docker pull mongo:latest

查看是否曾经装置 mongo

装置完之后能够应用此命令来运行 mongo 容器
docker run -itd –name mongo -p 27017:27017 mongo –auth

-p 27017:27017:映射容器服务的 27017 端口到宿主机的 27017 端口。内部能够间接通过 宿主机 ip:27017 拜访到 mongo 的服务。--auth:须要明码能力拜访容器服务。

如果呈现上面报错则证实该容器曾经存在,须要更换名称或是间接运行该容器

docker: Error response from daemon: Conflict. The container name "/mongo" 
is already in use by container "5ce065ddce059a1d022b386c6238486e9d7e943fed58794a
1f44d0cefb0efd62". You have to remove (or rename) that container to be 
able to reuse that name.

See ‘docker run –help’.
应用如下操作可查看所有 docker 容器

docker ps -a

应用上面命令可删除容器

docker rm NAME/CONTAINER ID

运行之后能够通过上面命令来查看容器是否在运行

接着应用以下命令增加用户和设置明码,并且尝试连贯。

docker exec -it mongo mongo admin
db.createUser({user:'admin',pwd:'000000',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]});
db.auth('admin', '000000')

此时再拜访本机的 27017 端口如果显示如下则表明胜利启动。

问题三 MongoDB 连贯 springboot

咱们之前设定的用户即 admin 代表管理员用户,而咱们要与 springboot 进行对接须要建设新的数据库和用户。

咱们进入 mongodb 中后先建设数据库

use appdb

而后再创立用于治理此数据库的用户, 可看到人哦了为 dboWner, 所治理的数据库为刚刚建设的 appdb

db.createUser({user:'liming', pwd:'000000', roles:[ {role:'dbOwner', db:'appdb'} ]})

配置对应依赖项:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>

而后就是对 application.yml 进行配置

spring.data.mongodb.uri=mongodb://liming:000000@127.0.0.1:27017/appdb

即 mongodb://用户名 : 明码 @ip,因为是本地故为 127.0.0.1:27017/ 数据库名称

留神,此时用到的用户名和明码是治理该数据库的用户,不是一开始建设的管理员用户。

为了验证是否配置胜利进行如下测试:
Dao:

@Repository
public interface TestReponsitory extends MongoRepository<TestEntity,Integer> {}

Entity:

public class TestEntity {
  private String testName;
  private Integer testInt;

  public String getTestName() {return testName;}

  public void setTestName(String testName) {this.testName = testName;}

  public Integer getTestInt() {return testInt;}

  public void setTestInt(Integer testInt) {this.testInt = testInt;}
}

Test:

@SpringBootTest
class TestReponsitoryTest {
  @Autowired
  private TestReponsitory testReponsitory;
  @Test
  void test() {TestEntity test = new TestEntity();
    test.setTestInt(1);
    test.setTestName("testName");

    List<TestEntity> all = testReponsitory.findAll();
    System.out.println(all);
  }
}

运行后查问结果显示与咱们插入的数据雷同

咱们还能够用以下命令来查看咱们所存储的数据

正文完
 0