MongoDB数据库基础操作

发布时间:2018-12-18  栏目:NoSQL  评论:0 Comments

三元素:数据库 集合 文档(json的扩展bson)

前边的话语

  为了保留网站的用户数据及作业数据,平日要一个数据库。MongoDB和Node.js特别般配,因为Mongodb是因文档的非关系型数据库,文档是仍BSON(JSON的轻量化二前行制格式)存储的,增删改查等管理数据库的一声令下和JavaScript语法很像。本文将详细介绍MongoDB数据库

 

服务启动重开停: sudo service mongodb start(stop,restart)

数据库

  数据库,顾名思义,是数额存储的库房,主要效用有个别个

  1、有团体地存放数据

manbet手机客户端3.0,  与以磁盘上温馨存文件不同,数据库替用户协会了数据的存储形式,用户就需要遵守数据库提供的接口将数据写入,数据就是会按规范的格式为贮存起来

  2、遵照不同的需要举行询问

  数据库不仅要可以写副数据,还辅助数据查询,并且会坚守不同的需要举办询问。因为存储是出协会的,因而查询及可以另行规范化,查询速度吗会快捷多

  不同的数据库的区别就是存放数据的团不同,同时提供了不同类别之询问。用户可以自己的需,拔取适合的数据库

【分类】

  数据库的归类有众多种,遵照对SQL语言的襄助,可以分为以下简单种植:

  1、SQL数据库,比如Oracle、Mysql等

  2、NoSQL数据库,比如Redis、MongoDB等

  随着在圈互联网采取之面世,传统的SQL数据库遭受了部分计划及之坏处。比如,SQL对表的定义使应用不够灵活,横向扩展相比较不方便。与片特点难以满意比较,反而是SQL数据库的无数特色没有用武之地。比如,在群面貌下,及时存取并无是必备之,也未尝特意多的作业需求,而这一个额外的特性消耗正在SQL数据库的特性

  由此NoSQL数据库应运而生,NoSQL全称是Not Only
SQL,意即”不仅仅是SQL”。但实在,绝大多数NoSQL数据库都放弃了针对性SQL语言的支撑。与SQL关系项目数据库相相比较,NoSQL非关系项目数据库大多摈弃了部分特点。比如,放任了实时一致性、对业务的总体协理以及多表查询等。听起来缺点很多,但收入为了解,NoSQL数据库简单便捷、方便扩充,并且爆发再好的性质

 

修改配置文件 /etc/mongodb.conf
添加 smallfiles=true

概述

  MongoDB是一个开源的NoSQL数据库,在国内为叫做芒果数据库。Linux、Apache、MySQL和PHP组成了生有名的LAMP架构。现在,有人提出以LAMP中的代表M的MySQL替换为MongoDB

  NoSQL数据库来不少,为何而接纳MongoDB呢?

  MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写,目的在于为
WEB
应用提供可扩充的大性能数据存储解决方案。MongoDB使用集合(collection)和文档(document)来叙述和仓储数据,集合(collection)就一定给表,文档(document)分外给行,字段相当给列,不像MySQL之类的涉项目数据库,表结构是永恒的,比如有平实践是因为多排列成,行行都同,而MongoDB不同,一个集合里的六只文档可以生出差的协会,更灵敏一些

  MongoDB有自己生明朗的性状,总计起来有以下4漫长

  1、没有说明结构的限定

  传统SQL数据库被,对各种张表都亟待定义表结构。倘若发新的蕴藏需求,往往需要续加新的字段,更改表结构。在有些场地下,会显十分不便于,而对此MongoDB,这不再是题材。因为它从不表明结构是概念,在应用同样张表在此以前,不欲针对就张表展开任何起先化操作。MongoDB的这种特征对高速支付和变异的事情需求是充足贴切的

  2、完全的目录匡助

  有些NoSQL数据库,比如redis,它是内存数据库,速度好快。可是,做为键值数据库,只协理一栽按键查询的措施。灵活性、使用限制和易用性都饱受震慑;再遵照hbase,写副速度颇快。不过,同样查询受限,它独自协助单索引,二级索引需要协调实现

  而MongoDB襄助单键索引、多键索引、全文索引和地理地方索引。所以MongoDB是效用相当系数之NoSQL数据库,也为名最接近关系数据库的未关周到据库

  3、优异的数量安全性与便利之范畴壮大

  MongoDB使用复制集做多副本存储,以保证数据的安全性。同时,MongoDB内置的分片技术可好便利地开展数量规模之壮大。分片技术是颇流行的一个风味,它涵盖了机关数据接口,动态扩容和缩容等同样多级在外数据库中要大量人工操作的行事,同时提供了针对性数据库的合看入口,不待以应用层再举办分发,显然缩小了人工成本

  4、完善之文档补助以及驱动匡助

 

查时数据库 db

安装

  首先,在官网的下载页面接纳适用的MongoDB版本举行下载

manbet手机客户端3.0 1

  然后,一步一步举办安装即可

manbet手机客户端3.0 2

manbet手机客户端3.0 3

  默认处境下,安装至C盘的Program Files文件夹下之MongoDB文件夹着

manbet手机客户端3.0 4

manbet手机客户端3.0 5

 

查阅有数据库 show dbs

服务器配置

【搭建服务器】

  搭建服务器,需要开展以下几独步骤

  1、创设data文件夹存储数据库的数据文件;创造log文件夹存储数据库的日志文件;创设bin文件夹存储数据库的可执行文件;创立conf文件夹来储存数据库的配备文件

  2、在windows系统下欲设置环境变量,否则在命令行中会指示mongod命令不可用

  于环境变量的path中,添加mongod.exe文件之目

manbet手机客户端3.0 6

  3、接下,有点儿种办法启动mongoDB服务,一栽如下所示,设置dppath参数值为于定义之目路径

mongod --dbpath=D:/app/mongo/data

  由下图览,mongodb的默认端口是27017

manbet手机客户端3.0 7

  4、另一样栽是在conf文件夹下新建mongod.conf文件,在这文件大校设置mongodb启动的布局参数

dbpath = data
logpath = log/mongod.log

mongod -f conf/mongod.conf

  这种方法以命令行工具中从未其余提醒,因为记录已保存及日志文件中,此时mongodb服务一度正常打开

manbet手机客户端3.0 8

【连接服务器】

  于搭建好mongodb服务器之后,需要动用客户端mongo进行连接,才会开展下同样步的操作

  因为凡动mongo连接mongodb服务器,所以要确保启动mongodb服务器的命令行工具不让关,新开一个命令行工具,并输入mongo
127.0.0.1/test,test为数据库的名目

manbet手机客户端3.0 9

【关闭mongod服务】

  首先切换来admin数据库(use
admin),然后下db.shutdownServer()命令来关闭服务

manbet手机客户端3.0 10

 

翻数据库信息 db.stats()

数据库操作

【默认】

  MongoDB 中默认的数据库也 test,假诺没有创立新的数据库,集合将存放于
test 数据库被

【查看】

  使用show dbs来查看数据库

show dbs

manbet手机客户端3.0 11

【创建/切换】

   使用use命令来切换/创制数据库,会发现创造的数据库并无在数据库的列表中,
要突显它,需要向数据库插入一些数

use db_name

manbet手机客户端3.0 12

【彰显当前数据库】

  使用db命令来显示当前数据库

db

manbet手机客户端3.0 13

【将数据写入集合中】

  使用db.集合名.insert(文档)来用文档的多寡写入集合中,文档的格式为JSON。而备存储在集合中之数都是BSON格式。BSON是相同序列json的相同种二进制情势之囤格式,简称Binary
JSON。

db.collection_name.insert()

manbet手机客户端3.0 14

【查看集合】

  上边的插入操作,会自动创设集合db1_coll1,使用show
collections命令可以查时数据库被的备集合

manbet手机客户端3.0 15

【删除数据库】

  这将去除时所选择数据库。
如若无选任何数据库,那么它以去除默认的’test‘数据库

db.dropDatabase()

manbet手机客户端3.0 16

 

切换数据库 use
数据库名(没有则独自是乘为这些数据库,但切莫创设,插入数据创立集合时才汇合创建)

集合操作

  集合类似于SQL数据库中之数据表,标识为collection

【查看集合】

   能够使用命令show collections反省创立的集结

  [注意]也得采纳show tables来查看集合

manbet手机客户端3.0 17

【创立集合】

  在插入文档时,MongoDB首先检查上限集合capped字段的大小,然后检查max字段

db.createCollection(name, {capped: <Boolean>, autoIndexId: <Boolean>, size: <number>, max <number>} )

  name:集合的讳

  capped:是否启用集合限制,假诺打开需要制定一个限制条件,默认为不启用,这么些参数没有实际意义

  max:集合中然则充裕条数限制,默认为没有范围

  size:限制集合使用空间的尺寸,默认为没有限定,size的优先级比max要大

  autoIndexId:是否利用_id作为目录,默认为使用(true或false)

manbet手机客户端3.0 18

  [注意]为聚集中插文档时,假如凑不存在 ,则会自动创设集合

manbet手机客户端3.0 19

【删除集合】

  MongoDB
的 db.collection_name.drop() 用于从数据库中除去集合。如若选定的集纳成功删除,drop()计将回true,否则回false

manbet手机客户端3.0 20

 

剔除时本着数据库 db.dropDatabase()

数量导入

  以mongoimport的设置目录下,可以行使如下命令导入数据文件

  使用window自带的CMD,使用反斜杠

mongoimport -h 192.168.1.106:27017 -d db1 -c users --file D:\app\vue\imooc\resource\dumall-users

  使用bash工具时,使用正斜杠

manbet手机客户端3.0 21

  mongoimport的详实命令如下

manbet手机客户端3.0 22

 

创立集合 db.createCollection(‘名字’,{opt})

关门服务

  假若想关闭mongodb服务,可以拔取mongo来实现

mongo 192.168.1.105:27017
use admin
db.shutdownServer()

   也可一贯采纳mongod来促成

mongod --shutdown

 

创办固定集合(size大小单位kb,max文档最酷条数):db.createCollection(‘集合名’,{capped:true,size:5,max:5})

翻看集合 show collections

去除集合 db.集合名.drop()

插入数据(会自行创造集合): db.集合名.insert({文档1,文档2,…})

概括询问: db.集合名.find()

改一长条文档(不加以multi修改一长,multi:true修改多少长度)
db.update({条件},{修改的情},{multi:true})

改一条文档中之一点键值($set) db.update({},{$set:{键:’值’}})

保存: db.集合名.save()

去(justOne:true删除一长条,默认多少长度):
db.集合名.remove({条件},{justOne:默认false})

查询再次来到第一漫漫: db.集合名.findOne({条件})
结果格式化: db.集合名.find({}).pretty()

比运算符:
约等于:默认就是当 如(查询title为3的文档) db.sub.find({title:3})

小于($lt) 查询(title小于5的) db.sub.find({title:{$lt:5}})

大于($gt) 查询(title大于5的) db.sub.find({title:{$gt:5}})

还有浮等于:$gte,小于等于:$lte,不抵:$ne

逻辑运算符与(逗号)
如查询名字是xx,性别也true的:db.stu.find({name:’xx’,gender:true})

或($or[])
查询名字是xx或者xxx的:db.stu.find({$or:[{name:’xx’},{name:’xxx’}]})

范围运算符($in:[],$nin:[]):如查询年龄当18-29底:db.stu.find({age:{$in:[18,29]}})

正则表明式(用// 或者$regex):查询姓王的:db.find({name:/^王/})

自打定义函数($where+函数)
如查询年龄大于20的:db.stu.find({$where:function(){return
this.age<20}})

limit(获取多少条文档)如得10修: db.集合.find().limit(10)

skip(跳了几长达) 如跳了2长长的: db.jihe.find().skip(2)

影子(彰显指定的字段展现设置1,不显设置0_id列默认显示):如出示name和age
db.find({条件},{name:1,age:1})

排序(sort,值为1升序,值为-1降序):db.集合.find().sort({字段:1,….})

统计(count()) db.集合.count({条件})

去重(distinct()): db.集合.distinct(‘去重新字段’,{条件})

留下评论

网站地图xml地图