mongodb启动(【MongoDB数据库】怎样安装、配置MongoDB)

本文目录
- 【MongoDB数据库】怎样安装、配置MongoDB
- 如何启动MongoDB的WEB界面
- 记一次mongodb启动不了的解决方法
- mongodb无法启动,由于目标计算机积极拒绝,无法连接
- mac如何启动mongodb
【MongoDB数据库】怎样安装、配置MongoDB
MongoDBserver以及怎样连接MongoDBserver等。
1、下载 MongoDB
***隐藏网址***
本机是Windows 7 32位。故下载的是mongodb-win32-i386-2.6.1.zip。兴许例程均是基于该版本号数据库。
2、配置环境变量
解压mongodb-win32-i386-2.6.1.zip文件到E:\,并又一次命名mongodb-win32-i386-2.6.1文件夹为mongodb,文件夹结构例如以下图
并在系统设置中配置环境变量path = E:\mongodb\bin;(便于在命令行中直接使用mogodb命令)
3、配置MongoDB数据库
创建一个mongo.config配置文件,配置MongoDB数据库的dbpath(数据库存储路径)和logpath(日志文件存储路径)。mongo.config文件内容例如以下:
你也但是使用 --dbpath选项和 --logpath选项来配置路径。
##store data here
dbpath=E:\mongodb\data
##all output go here
logpath=E:\mongodb\log\mongo.log
特别提示:
因为dbpath路径为E:\mongodb\data,而这个目录默认不存在,故需手动创建,不然在运行启动MongoDBserver时会提示找不到该目录。同理,也需手动创建一个E:\mongodb\log目录用于保存日志。
4、启动MongoDBserver
使用 mongod.exe --config E:\mongodb\mongo.config 启动MongoDBserver。--config 选项表示启动时通过E:\mongodb\mongo.config配置文件的信息配置server。
5、连接MongoDBserver
使用mongo.exe连接已经启动的MongoDB server。(假设第4步server没有启动成功,连接MongoDBserver时会报第7步异常里的错误!)
启动成功后,进入mongodb shell命令行,在mongodb shell命令行中我们能够进行数据库的_问,已经对数据库运行CRUD操作。
6、加入MongoDB到Winodows服务
window服务来启动MongoDB server。
事实上做到第5步。我们已经完毕了对MongoDB数据的安装已经配置,能够直接_始鼓捣MongoDB CRUD命令
了,可是每次都通过第4步进行加入配置并启动难免麻烦,这才有了第6步加入MongoDB到window服务,实现了通过启动服务来启动MongoDB 服务
器。
1)加入MongoDB到Windows Service, 以便于通过window服务配置系统启动时MongoDB服务自己主动启动。
配置成功后。在控制面板的服务中可看到该服务。例如以下图所看到的:
C:\Users\Administrator》mongod --config D:\mongodb\mongo.config --install
2)启动MongoDB服务
C:\Users\Administrator》net start MongoDB
3)停止MongoDB服务
C:\Users\Administrator》net stop MongoDB
4)从windows服务中移除MongoDB服务
C:\Users\Administrator》mongod --remove
5)通过mongod --help查看很多其它的配置命令选项。
C:\Users\Administrator》mongod --help
--installinstall mongodb service
--remove remove mongodb service
7、异常:
warning: Failed to connect to 127.0.0.1:27017, reason: errno:10061
表示:没有启动MondoDBserver,或启动server失败;
8、_考:
How To Install MongoDB On Windows(推荐)
Install MongoDB on Windows
MongoDB configuration options
9、你可能感兴趣:
【MongoDB数据库】MongoDB 命令入门初探
【MongoDB数据库】Java MongoDB CRUD Example
***隐藏网址***
【MongoDB数据库】怎样安装、配置MongoDB
标签:
如何启动MongoDB的WEB界面
让我们构建一个简单的EmployeeManager Web服务,我们将使用它来演示与MongoDB连接的HATEOAS。为了引导我们的应用程序,我们将使用Spring Initializr。我们将使用Spring HATEOAS和Spring Data MongoDB作为依赖项。你应该看到类似下图2所示的内容。 图2 :引导应用程序配置完成后,下载zip并将其作为Maven项目导入你喜欢的IDE中。 首先,让我们配置application.properties。要获得MongoDB连接,spring.data.mongodb.host= //Mongo server host
spring.data.mongodb.port= //Mongo server port
spring.data.mongodb.username= //Login user
spring.data.mongodb.password= //Password
spring.data.mongodb.database= //Database name
一般来说,如果所有内容都是全新安装的,并且你没有更改或修改任何Mongo属性,则只需提供一个数据库名称(已经通过GUI创建了一个数据库名称)。
spring.data.mongodb.database = EmployeeManager
另外,为了启动Mongo实例,作者创建了一个.bat,它指向安装文件夹和数据文件夹。它是这样的:"C:\Program Files\MongoDB\Server\3.6\bin\mongod" --dbpath D:\Inther\EmployeeManager\warehouse-data\db
***隐藏网址***
public class Employee {
private String employeeId;
private String firstName;
private String lastName;
private int age;
}
public class Department {
private String department;
private String name;
private String description;
private List《Employee》 employees;
}
现在我们已经完成了模型的制作,让我们来创建存储库,以便来测试持久性。存储库如下所示:
public interface EmployeeRepository
extends MongoRepository《Employee, String》 {
}
public interface DepartmentRepository
extends MongoRepository《Department,String》{
}
如上所示,这里没有方法,因为大家都知道Spring Data中的中心接口被命名为Repository,在其之上是CrudRepository,它提供了处理模型的基本操作。在CrudRepository之上,我们有PagingAndSortingRepository,它为我们提供了一些扩展功能,来简化分页和排序访问。在我们的案例中,最重要的是MongoRepository,它用于严格处理我们的Mongo实例。因此,对于我们的案例来说,除了那些现成的方法外,我们不需要任何其他方法,但是仅出于学习目的,作者在这里要提到的是你可以添加其他查询方法的两种方法:
- “惰性”(查询创建):此策略将尝试通过分析查询方法的名称并推断关键字(例如findByLastnameAndFirstname)来构建查询。
- 编写查询:这里没有什么特别的。例如,只用@Query注释你的方法,然后自己编写查询。你也可以在MongoDB中编写查询。下面是基于JSON的查询方法的示例:
- 至此,我们已经可以测试我们持久性如何工作。我们只需要对模型进行一些调整即可。通过调整,作者的意思是我们需要注释一些东西。Spring Data MongoDB使用MappingMongoConverter将对象映射到文档,下面是我们将要使用的一些注释:
- @Id :字段级别注释,指出你的哪个字段是身份标识。
- @Document :类级别的注释,用于表示该类将被持久化到数据库中。
- @DBRef :描述参考性的字段级别注释。
- 注释完成后,我们可以使用CommandLineRunner获取数据库中的一些数据,CommandLineRunner是一个接口,用于在应用程序完全启动时(即在run()方法之前)运行代码段。在下面,你可以看一下作者的Bean配置。
- 我们已经创建了一些模型,并对它们进行了持久化。现在,我们需要一种与他们交互的方式。如上所说,所有代码都可以在GitHub上找到,因此作者在这里将仅向我们展示一个域服务(接口和实现)。接口如下:
- 接口的实现如下:
- 这里没有什么特别的要注意的,下面我们将继续讨论最后一个难题——控制器!你可以在下面看到员工资源的控制器实现。
- 因此,对于上面实现的所有方法,我们将自己定位在Richardson成熟度模型的第二级,因为我们使用了HTTP动词并实现了CRUD操作。现在,我们有了与数据进行交互的方法,并且可以使用Postman,我们可以如下图3所示检索资源,或者可以如下图4所示添加新资源。
- 图3 :检索JSON中的部门列表
- 图4:JSON中添加新员工
@Query("{ ’firstname’ : ?0 }")
List《Employee》 findByTheEmployeesFirstname(String firstname);
@Bean public CommandLineRunner init(EmployeeRepository employeeRepository, DepartmentRepository departmentRepository) {
return (args) -》 {
employeeRepository.deleteAll();
departmentRepository.deleteAll();
Employee e = employeeRepository.save(new Employee("Ion", "Pascari", 23));
departmentRepository.save(new Department("Service Department", "Service Rocks!", Arrays.asList(e)));
for (Department d : departmentRepository.findAll()) {
LOGGER.info("Department: " + d);
}
};
}
public interface EmployeeService {
Employee saveEmployee(Employee e);
Employee findByEmployeeId(String employeeId);
void deleteByEmployeeId(String employeeId);
void updateEmployee(Employee e);
boolean employeeExists(Employee e);
List《Employee》 findAll();
void deleteAll();
}
@Service public class EmployeeServiceImpl implements EmployeeService {
@Autowired
private EmployeeRepository employeeRepository;
@Override
public Employee saveEmployee(Employee e) {
return employeeRepository.save(e);
}
@Override
public Employee findByEmployeeId(String employeeId) {
return employeeRepository.findOne(employeeId);
}
@Override
public void deleteByEmployeeId(String employeeId) {
employeeRepository.delete(employeeId);
}
@Override
public void updateEmployee(Employee e) {
employeeRepository.save(e);
}
@Override
public boolean employeeExists(Employee e) {
return employeeRepository.exists(Example.of(e));
}
@Override
public List《Employee》 findAll() {
return employeeRepository.findAll();
}
@Override
public void deleteAll() {
employeeRepository.deleteAll();
}
}
@RestController
@RequestMapping("/employees")
public class EmployeeController {
@Autowired
private EmployeeService employeeService;
@RequestMapping(value = "/list/", method = RequestMethod.GET)
public HttpEntity《List《Employee》》 getAllEmployees() {
List《Employee》 employees = employeeService.findAll();
if (employees.isEmpty()) {
return new ResponseEntity《》(HttpStatus.NO_CONTENT);
} else {
return new ResponseEntity《》(employees, HttpStatus.OK);
}
}
@RequestMapping(value = "/employee/{id}", method = RequestMethod.GET)
public HttpEntity《Employee》 getEmployeeById(@PathVariable("id") String employeeId) {
Employee byEmployeeId = employeeService.findByEmployeeId(employeeId);
if (byEmployeeId == null) {
return new ResponseEntity《》(HttpStatus.NOT_FOUND);
} else {
return new ResponseEntity《》(byEmployeeId, HttpStatus.OK);
}
}
@RequestMapping(value = "/employee/", method = RequestMethod.POST)
public HttpEntity《?》 saveEmployee(@RequestBody Employee e) {
if (employeeService.employeeExists(e)) {
return new ResponseEntity《》(HttpStatus.CONFLICT);
} else {
Employee employee = employeeService.saveEmployee(e);
URI location = ServletUriComponentsBuilder .fromCurrentRequest().path("/employees/employee/{id}")
.buildAndExpand(employee.getEmployeeId()).toUri();
***隐藏网址***
***隐藏网址***
***隐藏网址***
}
}
@RequestMapping(value = "/employee/{id}", method = RequestMethod.PUT)
public HttpEntity《?》 updateEmployee(@PathVariable("id") String id, @RequestBody Employee e) {
Employee byEmployeeId = employeeService.findByEmployeeId(id);
if(byEmployeeId == null){
return new ResponseEntity《》(HttpStatus.NOT_FOUND);
} else {
byEmployeeId.setAge(e.getAge());
byEmployeeId.setFirstName(e.getFirstName());
byEmployeeId.setLastName(e.getLastName());
employeeService.updateEmployee(byEmployeeId);
return new ResponseEntity《》(employeeService, HttpStatus.OK);
}
}
@RequestMapping(value = "/employee/{id}", method = RequestMethod.DELETE)
public ResponseEntity《?》 deleteEmployee(@PathVariable("id") String employeeId) {
employeeService.deleteByEmployeeId(employeeId);
return new ResponseEntity《》(HttpStatus.NO_CONTENT);
}
@RequestMapping(value = "/employee/", method = RequestMethod.DELETE)
public ResponseEntity《?》 deleteAll() {
employeeService.deleteAll();
return new ResponseEntity《》(HttpStatus.NO_CONTENT);
}
}
记一次mongodb启动不了的解决方法
启动不了,分别报错如下:
ERROR: child process failed, exited with error number 1
ERROR: child process failed, exited with error number 51
1,第一次尝试启动mongod,报错,取消执行,
ai-learning-mongo-1-# su - mongo
Last login: Tue Jan 7 16:40:11 CST 2020 on pts/1
$ /app/mongodb/bin/mongod --config /app/mongodb/mongod.conf &
16477
$ about to fork child process, waiting until server is ready for connections.
forked process: 16479
ERROR: child process failed, exited with error number 1
To see additional information in this output, start without the "--fork" option.
^C
+ Exit 1 /app/mongodb/bin/mongod --config /app/mongodb/mongod.conf
2,检查目录,发现配置文件权限不对,修改目录权限
$ cd /app/mongodb/
$ ll
total 12
drwxr-xr-x 2 mongo mongo 248 Feb 26 2019 bin
drwxr-xr-x 8 mongo mongo 295 Jan 7 16:39 db
-r-------- 1 mongo mongo 1024 Feb 26 2019 keyfile
drwxr-xr-x 2 mongo mongo 24 Jan 7 15:46 logs
-rw-r--r-- 1 root root 785 Feb 26 2019 mongod.conf
-rw-r--r-- 1 mongo mongo 6 Jan 7 16:39 mongod.pid
$ chown -R mongo:mongo mongod.conf
chown: changing ownership of ‘mongod.conf’: Operation not permitted
$ exit
logout
3,修改配置文件权限
ai-learning-mongo-1-# chown -R mongo:mongo /app/mongodb/mongod.conf
4,尝试重新启动,还是报一样的错,排查可能目录属主还有可能是其他用户,继续往下级目录查看,发现bin目录下还是没有改掉权限
$ cd bin/
$ ll
total 285444
-rwxr-xr-x 1 root root 10546472 Nov 14 2018 bsondump
-rwxr-xr-x 1 root root 7770 Nov 14 2018 install_compass
-rwxr-xr-x 1 root root 33750624 Nov 14 2018 mongo
-rwxr-xr-x 1 root root 59532264 Nov 14 2018 mongod
-rwxr-xr-x 1 root root 12848240 Nov 14 2018 mongodump
-rwxr-xr-x 1 root root 10884072 Nov 14 2018 mongoexport
-rwxr-xr-x 1 root root 10767240 Nov 14 2018 mongofiles
-rwxr-xr-x 1 root root 11024432 Nov 14 2018 mongoimport
-rwxr-xr-x 1 root root 59036976 Nov 14 2018 mongoperf
-rwxr-xr-x 1 root root 13955512 Nov 14 2018 mongoreplay
-rwxr-xr-x 1 root root 13941224 Nov 14 2018 mongorestore
-rwxr-xr-x 1 root root 34171112 Nov 14 2018 mongos
-rwxr-xr-x 1 root root 11080688 Nov 14 2018 mongostat
-rwxr-xr-x 1 root root 10721912 Nov 14 2018 mongotop
$ exit
logout
5,修改整个目录结构的权限
# chown -R mongo:mongo /app/mongodb/
6,尝试启动,报error number 51
$ /app/mongodb/bin/mongod --config /app/mongodb/mongod.conf &
18399
$ about to fork child process, waiting until server is ready for connections.
forked process: 18401
ERROR: child process failed, exited with error number 51
To see additional information in this output, start without the "--fork" option.
^C
+ Exit 51 /app/mongodb/bin/mongod --config /app/mongodb/mongod.conf
7,启动不了mongodb,查看日志 less /app/mongodb/logs/mongod.log
8,根据报错,open: too many open files ,认为应该是open files 数量不够,查阅资料修改
***隐藏网址***
根据以上文章修改ulimit -HSn 102400 参数,并且删除lock文件,清空log/目录下日志,
$ rm -f mongod.lock
$ cd logs
$ ll
total 24
-rw-rw-r-- 1 mongo mongo 21997 Jan 7 17:09 mongod.log
$ mv mongod.log /tmp/mongod.log.25
9,重启启动,成功启动mongod
$ /app/mongodb/bin/mongod --config /app/mongodb/mongod.conf &
19549
$ about to fork child process, waiting until server is ready for connections.
forked process: 19552
child process started successfully, parent exiting
+ Done /app/mongodb/bin/mongod --config /app/mongodb/mongod.conf
$ ps -ef | grep mongod
appuser 13359 9538 0 16:01 pts/0 00:00:00 vi mongod.conf
mongo 19552 1 50 17:26 ? 00:00:13 /app/mongodb/bin/mongod --config /app/mongodb/mongod.conf
mongo 19679 19442 0 17:26 pts/1 00:00:00 grep --color=auto mongod
10,另外一台服务器修改以上参数,并且修改目录权限,重启发现报错error number 1
11,查看mongod.log ,尝试提高--maxConnes,启动失败,报错error number 1
$ /app/mongodb/bin/mongod --config /app/mongodb/mongod.conf --maxConns=2000 &
12,根据日志钟第二行, permissions on /app/mongodb/keyfile are too open ,怀疑/app/mongodb/keyfile文件权限给多了,查看权限,果然给多了,收回权限改为400,
$ ll /app/mongodb/keyfile
-rwxrwxrwx 1 mongo mongo 1024 Feb 26 2019 /app/mongodb/keyfile
$ exit
logout
# chmod 400 /app/mongodb/keyfile
13,再次尝试启动,此次启动成功
# su - mongo
Last login: Tue Jan 7 17:33:56 CST 2020 on pts/2
$ /app/mongodb/bin/mongod --config /app/mongodb/mongod.conf &
21252
$ about to fork child process, waiting until server is ready for connections.
forked process: 21254
child process started successfully, parent exiting
+ Done /app/mongodb/bin/mongod --config /app/mongodb/mongod.conf
$
$ ps -ef | grep mongo
root 21222 20426 0 17:41 pts/2 00:00:00 su - mongo
mongo 21223 21222 0 17:41 pts/2 00:00:00 -bash
mongo 21254 1 17 17:41 ? 00:00:06 /app/mongodb/bin/mongod --config /app/mongodb/mongod.conf
mongo 21389 21223 0 17:42 pts/2 00:00:00 ps -ef
mongo 21390 21223 0 17:42 pts/2 00:00:00 grep --color=auto mongo
mongodb无法启动,由于目标计算机积极拒绝,无法连接
这不是mongodb无法启动,是你还没有启动mongodb就来连接使用它了,肯定是不成功的。
先去mongodb的bin目录下运行mongod --dbpath XXXX/data 来启动mongodb,然后再来连接mongodb。
简介:
Mongodb,分布式文档存储数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo使用C++开发。
应用:
MongoDB服务端可运行在Linux、Windows或mac os x平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。
mac如何启动mongodb
1.下载
去官网下载好一个压缩文件
2.在自己的电脑里新建一个目录,随便起个名字,如tool
3. 将mongodb解压后的文件_,拷贝到tool目录下
4.打开终端,执行:
cd tool/mongodb-osx-ssl-86_64-3.4.0/bin
./mongod
ps:mongodb分为两个阶段,第一个阶段是开启服务端,即将mongodb开机,只要开机了,你才能连接上
这好比手机蓝牙一样,你想连接别人的蓝牙,前提是别人将蓝牙开机了,你才能连接上
第二阶段:客户端去连接服务端的mongodb,你自己的蓝牙,就相当于客户端.
使用可视化工具:mongocompass直接去连接,省的输入一系列的命令
mac如何启动mongodb
标签:阶段ODBmongomongod输入.comasctool终端

本文相关文章:
android studio代码混淆(AndroidStudio自带的混淆配置)
2026年9月15日 16:15
linuxbind服务(在Linux系统的服务器中,使用BIND配置域名服务,主配置文件存放在( )中)
2026年9月6日 01:45
eclipse如何配置maven(linux eclipse 怎么配置maven)
2026年9月3日 19:15
idea配置tomcat路径(idea 设置虚拟路径和tomcat配置虚拟目录映射)
2026年7月21日 01:00
cassandra安装(Cassandra与HugeGraph的安装配置)
2026年7月8日 22:15
更多文章:
kali上传文件到apache服务器(如何在macOS系统和KaliLinux系统之间共享文件)
2025年10月25日 23:30
c语言一维数组有几个数(c语言的一维数组中至少要有几个元素)
2025年11月27日 13:30
织梦岛隐藏要素(塞尔达传说织梦岛脸孔神殿迷宫怎么通关 脸孔神殿迷宫)
2025年9月18日 18:45
最新版android studio安装(如何安装android studio)
2025年9月24日 10:15
97的十六进制(97 98 换成八进制 如何换 如何将十进制转换成八进制或者十六进制 哪位大仙帮帮忙)
2026年4月5日 15:00
redis命令登录(软件Xshell连接Redis操作教程)
2026年6月6日 17:30
category nouns(the different lexical category in translation)
2026年1月9日 10:45
哈夫曼树编码不唯一那解码结果(如何解决哈夫曼树不唯一的问题)
2025年6月24日 02:45
关系数据库管理系统有哪些?(下面哪些属于关系型数据库管理系统())
2026年5月2日 12:15
insertrow(在Power Query中如何插入自定义行)
2025年10月10日 12:30













