MongoDB数据库

一、MongoDB简介

C++语言编写,基于分布式文件存储,开源数据库;

在高负载情况下,保证服务器性能

为web应用提供可扩展的高性能数据存储解决方案

存储为一个文档,键值key=>value,文档类似于json

MongoDB术语

1、数据库

database

2、集合

collection

3、文档

document

4、域

field

5、索引

index

6、主键

primary key

三、数据库、集合的相关操作

(数据库的相关操作)

1、查看当前数据库名称

db

2、列出所有的数据库

show dbs

3、切换数据库

use 数据库名称

4、查看当前数据库信息

db.stats()

5、删除数据库

db.dropDatabase()

(集合的相关操作)

1、创建集合:

db.createCollection(name,options)
其中:name 表示集合名称
           options 表示文档

不限制集合大小:db.createCollection('stu') stu为集合名称

限制集合大小:db.createCollection({capped:truesize:10 }) 其中:capped设置为true时,表示有上限,为false时,不设置上限;size表示只有当capped为true时需要设置此参数

创建固定集合,且文档最大个数为100
db.createCollection("sub",{capped:true,size:10,max:100})

2、查看数据库集合

show collections

3、删除集合

db.集合名称.drop()

四、数据库的增删改查操作

插入数据


1.PNG

更新数据


2.PNG
3.PNG

格式化数据:

db.集合名称.find().pretty()

查询数据

查询所有:

db.集合名称.find()
db.集合名称.find(
         {'key':'value'} 条件
)

查询一条:

db.集合名称.findOne({'key':'value'} 条件)

五、比较运算符

等于
小于:$lt
小于等于:$lte
大于:$gt
大于等于:$gte

举例:
单条查询
db.集合名称.find(
{
'times':{gte:100}, } ) 多条查询 db.集合名称.find( { 'times':{gte:100},
'actors':'李连杰',
}
)

六、逻辑运算符

逻辑或:


4.PNG

或和并且一起使用:


5.PNG

范围运算符


6.PNG

七、使用正则查询数据

7.PNG

八、$type:只返回符合数据类型的文档

db.集合名称.find(
{
'key':{$type:'指定数据类型'}
}
)

九、限制返回:limit

跳过指定的条数:skip

db.集合名称.find().limit(m).skip(n) 表示查询跳过n条后查询m条数据

注意:limit和skip先后顺序不影响结果

十、$sort:进行排序:

1:表示升序

db.集合名称.find( ).sort({'key':1})

-1:表示降序

db.集合名称.find( ).sort({'key':-1})

十一、distinct去重:

db.集合名称.distinct(
'去重字段',
{'条件'}
)

十二、project(投影):

可以选择查询结果中,数据展示和隐藏

0表示隐藏
1表示显示

db.集合名称.find(
{'条件'},
{‘key’:1}
) 假如要设置要显示的字段时,第一个字段设置为1,表示只展示一个数据,其他的数据都不会显示;
反之,只隐藏当前设置的字段,其他的字段都会显示出来

十三、count 统计个数

(1)db.集合名称.count() count()可以跟在集合名称的后面
db.集合名称.count(
{actors:'李连杰'}
)

(2)db.集合名称.find().count() 也可以跟在find()的后面

db.集合名称.find(
{actors:'李连杰'}
).count()

MongoDB聚合

MongoDB中聚合的方法使用aggregate() 语法

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

聚合框架的操作

$group:

将集合中的文档分组,可用于统计结果。

$project:

修改输入文档的结构。可以用来重命名、增加或
删除域,也可以用于创建计算结果以及嵌套文档。

$match:

用于过滤数据,只输出符合条件的文档。$match使
用MongoDB的标准查询操作。

$limit:

用来限制MongoDB聚合管道返回的文档数。

$skip:

在聚合管道中跳过指定数量的文档,并返回余下的文
档。

$unwind:

将文档中的某一个数组类型字段拆分成多条,每条
包含数组中的一个值。

$sort:

将输入文档排序后输出。

聚合的表达式

$sum

计算总和
$avg
计算平均值
$min
获取集合中所有文档对应值得最小值

$max

获取集合中所有文档对应值得最大值

$push

在结果文档中插入值到一个数组中

$first

根据资源文档的排序获取第一个文档数据

$last

根据资源文档的排序获取最后一个文档数据

$group

将集合中的文档分组,可用于统计结果

MongoDB的备份和恢复

MongoDB 备份(mongodump)

mongodump -h dbhost -d dbname -o dbdirectory

-h: MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017
-d: 需要备份的数据库实例,例如:test
-o: 备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

恢复备份

mongorestore -h hostname:port -d dbname --dir path

MongoDB数据导入与导出

导出工具:mongoexport

mongoexport -d dbname -c collectionname -o file --type json/csv -f field

d :数据库名
c :collection名
o :输出的文件名
-type : 输出的格式,默认为json
f :输出的字段,如果-type为csv,则需要加上-f "字段名"

数据导入:mongoimport

mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv

d:数据库名
c:collection名
-type:导入的格式默认json
f:导入的字段名
-headerline:如果导入的格式是csv,则可以使用第一行的标题作为导入的字段
-file:要导入的文件

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容