mongodb数据库

MongoDB是一个高效的基于分布式文件存储的数据库,将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组,很适合和nodejs搭配。

Mongoose是基于nodejs的一个mongodb对象模型工具,可以很方便的对mongodb进行操作。

momngodb和mysql比较

对比项 MongoDB MySQL
数据库 数据库(dataBase) 数据库(dataBase)
集合(collection) 二维表(table)
表在中的一行数据 文档(document) 一条记录(record)
表字段 键(key) 列(column)
主外键 Primary Key
灵活度扩展性
表的关联性

mongodb的安装

windows下的安装

安装

根据电脑操作系统位数下载对应的安装包。安装过程几乎一路下一步就可以安装完成。一般默认安装在C:\Program Files\MongoDB。

安装完mongodb成后,在此,以安装在c盘路径下为例,创建文件夹 C:\data\db。

在mongodb的安装目录的bin文件下,执行命令C:\Program Files\MongoDB\Server\3.2\bin mongod –dbpath c:\data\db,如果出现如下提示一般表示安装成功,这样mongodb的服务就启动了,ctrl+c可关闭服务。

再创建文件夹C:\data\log和文件C:\data\mongod.cfg。
mongod.cfg文件的内容为下:

  1. 1
    2
    3
    4
    5
  1. systemLog:
    destination: file
    path: c:\data\log\mongod.log
    storage:
    dbPath: c:\data\db

运行命令行执行mongod.cfg来制定数据库和日志文件目录:
C:\Program Files\MongoDB\bin\mongod.exe –config “C:\data\mongod.cfg” –install

启动服务

C:\Program Files\MongoDB\Server\3.2\bin net start MongoDB
启动服务状态下,浏览器打开 http://localhost:27017,如果出现以下内容,表示安装及启动mongodb服务成功。

关闭服务

C:\Program Files\MongoDB\Server\3.2\bin net stop MongoDB

常用命令

安装路径下,运行mongo进入命令模式,C:\Program Files\MongoDB\Server\3.2\bin mongo

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
  1. db.help() 查看命令提示
    db 查看当前所在数据库的名字
    use 数据库名 表示切换或是创建数据库
    show dbs 显示有数据的库
    db.stats() 查看当前数据的状态
    db.version() 查看mongoDB版本
    db.[数据库名].insert() 插入数据
    db.[数据库名].find() 查找数据
    ![](/images/3.png)

linux下的安装

1. 首先查你的linux版本

x86_64 表示你的操作系统为64位

  1. 1
  1. $ uname -a

2.下载安装包

  1. 1
  1. $ curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz

3. 解压

  1. 1
  1. $ tar -zxvf mongodb-linux-x86_64-3.0.6.tgz

4. 将解压包拷贝到指定目录

  1. 1
  1. $ mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb

5. 将可执行文件添加到path路径

export PATH=/bin:$PATH
本文的安装路径在 /usr/local/mongodb,
所以运行

  1. 1
  1. $ export PATH=/usr/local/mongodb/bin:$PATH

6. 创建数据库目录

mongodb的安装需手动创建data存储目录,在此我们在根目录下创建data/mongo文件夹

  1. 1
  1. $ mkdir -p /data/mongo

然后在mongo文件夹里创建mongodb.cnf配置文件,用来设置mongodb的数据库路径以及启动参数等。
内容可以如下。
其中,dbpath表示mongodb数据库的路径,logpath是数据库日志路径,port表示连接端口,auth为true表示通过密码验证。

其中注意,auth不设置或设置为false的话,数据库表示没有密码,可以直接连接。自己测试的话可以不设密码,但正式项目中一定要设置密码验证,
否则任何人都可以轻易侵入你的数据库。

  1. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
  1. dbpath=/data/mongo/
  2.  
  3. logpath=/data/mongo/mongo.log
  4.  
  5. logappend=true
  6.  
  7. fork=true
  8.  
  9. port=27017
  10.  
  11. auth=true

7. 运行mongodb服务

在/usr/local/mongodb/bin路径下,运行命令,-f 后的路径为自己创建的mongodb配置文件(见第6步)

  1. 1
  1. $ mongod -f /data/mongo/mongodb.cnf

如果不创建mongodb.cnf的话,也可以用加参数的方式启动mongodb,效果和启动配置文件一样。但推荐配置文件的方式,修改和启动都方便。

  1. 1
  1. $ mongod -dbpath /data/mongo/ -logpath /data/mongo/mongo.log -logappend -fork -port 27017 -auth

运行后打印类似如下,表示启动mongodb成功

  1. 1
    2
    3
    4
    5
  1. 2018-04-24T08:55:06.486+0000 I JOURNAL [initandlisten] journal dir=/data/db/journal
    2018-04-24T08:55:06.487+0000 I JOURNAL [initandlisten] recover : no journal files present, no recovery needed
    2018-04-24T08:55:11.438+0000 I JOURNAL [initandlisten] preallocateIsFaster check took 4.951 secs
    2018-04-24T08:55:11.536+0000 I JOURNAL [durability] Durability thread started
    2018-04-24T08:55:11.536+0000 I JOURNAL [journal writer] Journal writer thread started

8. 数据库的重启

关闭数据库:

切入admin数据库中,然后运行db.shutdownServer() 关闭数据库。
有时关闭失败,可能有其他误操作,这时在/data/mongo下运行rm -f mongod.lock删掉 /data/mongo/mongod.lock文件,再重启就好了。

  1. 1
    2
  1. $ use admin
    $ db.shutdownServer()

但有时运行db.shutdownServer()依然不能关闭数据库,这是可以采用一种强力的方法,用命令强行杀死mongodb的进程。

  1. 1
    2
    3
    4
  1. $ netstat -tln // 查看进程
    $ netstat -tln | grep 27017 //查看mongo进程
    $ lsof -i:27017 // 查看27017端口被哪个应用占用,找出pid (如果没有lsof,centos下先安装 yum install lsof)
    $ kill -9 9527 // 9527是mongodb进程的pid

启动数据库

  1. 1
  1. mongod -f /data/mongo/mongodb.cnf

启动成功后会有successfully的提示符

8. 设置数据库用户及密码

默认安装mongodb,如果直接创建数据库的话,是没有密码的,在真实开发环境中,很有必要为数据库设置密码来保障安全。

Mongodb用户有全局用户和数据库对应用户。

mongodb有一个admin数据库,用于创建全局用户账号,这个账号可以访问可连接到其他数据库。

创建admin账号

  1. 1
    2
    3
  1. $ use admin // 切到admin数据库
    $ db.createUser({user: 'root', pwd: 'test', roles: ['root']}) // 创建账号和密码
    $ db.auth('root', 'test') // 验证用户身份 返回1为正确, 0为错误

可以在可视化工具里通过admin账号连接到所有的数据库。

创建普通数据库账号,方式同创建admin账号,只是要先切进到对应的数据库。

  1. 1
    2
    3
  1. $ use somedbname // 切到普通数据库
    $ db.createUser({user:'root',pwd:'test2',roles: [{role:'readWrite',db:'somedbname'}]}) // 创建账号和密码,设置权限为可读写
    $ db.auth('root', 'test2') // 验证用户身份 返回1为正确, 0为错误

项目开发中比如要连接某个数据库:

  1. 1
  1. mongodb://root:test2@127.0.0.1:27017/somedbname

注意一点,如果密码有@的话,需要转译成’%40’

文章来源:http://kiwiyan.cn/2018/01/08/%E8%BF%9E%E6%8E%A5mongodb/

==================================

补充:

如果想要进入MongoDB的Shell,需要运行/usr/local/mongodb/bin/mongo

每次都要打这么一长串命令太麻烦了 所以干脆在系统bin目录下给它建立一个软链接吧

  1. ln -s /usr/local/mongodb/bin/mongo /bin/mongo

这样一来 不管在哪个目录下 如果想要进入MongoDB的shell 只需要打"mongo"命令就可以了

使用mongoose连接mongodb(转载文章)的更多相关文章

  1. 在express中使用Mongoose连接MongoDB

    为何要学Mongoose? Mongoose是MongoDB的一个对象模型工具,封装了MongoDB对文档的的一些增删改查等常用方法,让NodeJS操作Mongodb数据库变得更加灵活简单. 0.安装 ...

  2. mongodb学习(3)--- NodeJs使用mongoose操作mongodb

    转载: https://cnodejs.org/topic/50c145ed637ffa4155c7eaee 首先对于以下错误说明(有写 db.close): Error: db object alr ...

  3. 2. node接口搭建--连接MongoDB数据库 (参考https://blog.csdn.net/ncepu_Chen/article/details/98725104#_337)

    1.使用mongoose连接MongoDB数据库 npm install mongoose 2.新建文件夹config存放数据库地址 3.安装MongoDB

  4. MONGOOSE – 让NODE.JS高效操作MONGODB(转载)

    Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...

  5. mongodb replica set 和 nodejs中使用mongoose连接replica

    一.mongodb replication 介绍 官网上的第一句话就是Replication is the process of synchronizing data across multiple ...

  6. NodeJS连接MongoDB和mongoose

    1.MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.是世界上目前用的最广泛的nosql数据库 2.noSql 翻译过来 not o ...

  7. Node.js:连接 MongoDB

    ylbtech-Node.js:连接 MongoDB 1.返回顶部 1. Node.js 连接 MongoDB MongoDB是一种文档导向数据库管理系统,由C++撰写而成. 本章节我们将为大家介绍如 ...

  8. node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)

    最近写了一个用node来操作MongoDB完成增.删.改.查.排序.分页功能的示例,并且已经放在了服务器上地址:http://39.105.32.180:3333. Mongoose是在node.js ...

  9. TCP同步与异步,长连接与短连接【转载】

    原文地址:TCP同步与异步,长连接与短连接作者:1984346023 [转载说明:http://zjj1211.blog.51cto.com/1812544/373896   这是今天看到的一篇讲到T ...

随机推荐

  1. [POJ3416]Crossing

    Problem 给你n个点,m个询问,每个询问有x, y 问以(x,y)为原点建立的平面直角坐标系分割的第一象限和第三象限的点数和减去第二象限和第四象限的点数和 Solution 用2个树状数组维护一 ...

  2. java泛型讲解

    原文: https://blog.csdn.net/briblue/article/details/76736356 泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是 ...

  3. python 高级语言特性

    装饰器decorator的使用 在某公司的一次笔试中面试官出了一道题,使用python 的decorator实现一个函数的执行时间的计算. 分析:关于函数执行时间的计算,那么肯定是执行之前得到一个时间 ...

  4. ReentrantReadWriteLock

    ReentrantReadWriteLock 这个对象,有两个内部类,readLock和writeLock,都有一个aqs的属性sync,实例化的时候,获取的是从ReentrantReadWriteL ...

  5. [Spring]初识Spring-Spring是什么?如何实例化一个Spring容器?

    关于Spring入门的基础知识点 Spring简介 Spring是由Rod Johnson创建的轻量型容器,目的在于简化企业级开发.是一种容器框架 a.降低侵入性 b.提供了IOC(控制反转)和AOP ...

  6. 用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)

    前几天接到一个任务,从gerrit上通过ssh命令获取一些commit相关的数据到文本文档中,随后将这些数据存入Excel中.数据格式如下图所示 观察上图可知,存在文本文档中的数据符合一定的格式,通过 ...

  7. <context:annotation-config/>和<mvc:annotation-driven/>及解决No mapping found for HTTP request with URI [/role/getRole] in DispatcherServlet with name 'springmvc-config'

    1:什么时候使用<context:annotation-config> 当你使用@Autowired,@Required,@Resource,@PostConstruct,@PreDest ...

  8. sqlite的数据类型

    参考sqlite官方文档:https://www.sqlite.org/datatype3.html 绝大多数的SQL数据库采用静态的.严格的数据类型,数据库中的值由数据表的列类型定义决定. 然而,s ...

  9. 几种常见数据库的driverClassName和url

    DB2: driverClassName:com.ibm.db2.jcc.DB2Driver url:jdbc:db2://localhost:50000/sample Oracle: driverC ...

  10. 【转载】 A* 寻路算法 (个人认为最详细,最通俗易懂的一个版本)

    原文地址: http://www.cppblog.com/christanxw/archive/2006/04/07/5126.html =============================== ...