MongoDB
C-haidragon
我的视频学习地址:https://edu.csdn.net/lecturer/5805?spm=1003.2001.3001.4144
展开
-
简介
简介MongoDB 是一个基于分布式 文件存储的NoSQL数据库由C++语言编写,运行稳定,性能高旨在为 WEB 应用提供可扩展的高性能数据存储解决方案查看官方网站MongoDB特点模式自由 :可以把不同结构的文档存储在同一个数据库里面向集合的存储:适合存储 JSON风格文件的形式完整的索引支持:对任何属性可索引复制和高可用性:支持服务器之间的数据复制,支持主-从模式及服务器之原创 2017-10-29 09:35:27 · 254 阅读 · 0 评论 -
聚合 aggregate
聚合 aggregate聚合(aggregate)主要用于计算数据,类似sql中的sum()、avg()语法db.集合名称.aggregate([{管道:{表达式}}])管道管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的输入ps ajx | grep mongo在mongodb中,管道具有同样的作用,文档处理完毕后,通过管道进行下一原创 2017-10-30 11:16:20 · 546 阅读 · 0 评论 -
$group
$group将集合中的文档分组,可用于统计结果_id表示分组的依据,使用某个字段的格式为'$字段'例1:统计男生、女生的总人数db.stu.aggregate([ {$group: { _id:'$gender', counter:{$sum:1} } }])Group by null原创 2017-10-30 11:17:09 · 780 阅读 · 0 评论 -
$match
$match用于过滤数据,只输出符合条件的文档使用MongoDB的标准查询操作例1:查询年龄大于20的学生db.stu.aggregate([ {$match:{age:{$gt:20}}}])例2:查询年龄大于20的男生、女生人数db.stu.aggregate([ {$match:{age:{$gt:20}}}, {$group:{_id:'$ge原创 2017-10-31 11:39:47 · 2664 阅读 · 0 评论 -
$project
$project修改输入文档的结构,如重命名、增加、删除字段、创建计算结果例1:查询学生的姓名、年龄db.stu.aggregate([ {$project:{_id:0,name:1,age:1}}])例2:查询男生、女生人数,输出人数db.stu.aggregate([ {$group:{_id:'$gender',counter:{$sum:1}}原创 2017-10-31 11:40:45 · 589 阅读 · 0 评论 -
$sort
$sort将输入文档排序后输出例1:查询学生信息,按年龄升序b.stu.aggregate([{$sort:{age:1}}])例2:查询男生、女生人数,按人数降序db.stu.aggregate([ {$group:{_id:'$gender',counter:{$sum:1}}}, {$sort:{counter:-1}}])原创 2017-10-31 11:41:12 · 727 阅读 · 0 评论 -
$limit、$skip、$unwind
$limit限制聚合管道返回的文档数例1:查询2条学生信息db.stu.aggregate([{$limit:2}])$skip跳过指定数量的文档,并返回余下的文档例2:查询从第3条开始的学生信息db.stu.aggregate([{$skip:2}])例3:统计男生、女生人数,按人数升序,取第二条数据db.stu.aggregate([ {$g原创 2017-10-31 11:41:58 · 1187 阅读 · 0 评论 -
安全
超级管理员为了更安全的访问mongodb,需要访问者提供用户名和密码,于是需要在mongodb中创建用户采用了角色-用户-数据库的安全管理方式常用系统角色如下:root:只在admin数据库中可用,超级账号,超级权限Read:允许用户读取指定数据库readWrite:允许用户读写指定数据库创建超级管理用户use admindb.createUser({ user:原创 2017-10-31 11:44:13 · 509 阅读 · 2 评论 -
复制(副本集)
复制(副本集)什么是复制复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性复制还允许从硬件故障和服务中断中恢复数据为什么要复制数据备份数据灾难恢复读写分离高(24* 7)数据可用性无宕机维护副本集对应用程序是透明复制的工作原理复制至少需要两个节点A、B...A是主节点,负责处理客户端请求其余的都是从节点,负责复制主原创 2017-10-31 11:45:28 · 375 阅读 · 0 评论 -
备份与恢复
备份语法mongodump -h dbhost -d dbname -o dbdirectory-h:服务器地址,也可以指定端口号-d:需要备份的数据库名称-o:备份的数据存放位置,此目录中存放着备份出来的数据例1sudo mkdir test1baksudo mongodump -h 192.168.196.128:27017 -d test1 -o ~/Deskto原创 2017-10-31 11:53:16 · 220 阅读 · 0 评论 -
消除重复
消除重复方法distinct()对数据进行去重语法db.集合名称.distinct('去重字段',{条件})例1:查找年龄大于18的性别(去重)db.stu.distinct('gender',{age:{$gt:18}})原创 2017-10-30 11:15:40 · 319 阅读 · 0 评论 -
统计个数
统计个数方法count()用于统计结果集中文档条数语法db.集合名称.find({条件}).count()也可以与为db.集合名称.count({条件})例1:统计男生人数db.stu.find({gender:1}).count()例2:统计年龄大于20的男生人数db.stu.count({age:{$gt:20},gender:1})原创 2017-10-30 11:15:17 · 574 阅读 · 0 评论 -
排序
排序方法sort(),用于对结果集进行排序语法db.集合名称.find().sort({字段:1,...})参数1为升序排列参数-1为降序排列例1:根据性别降序,再根据年龄升序db.stu.find().sort({gender:-1,age:1})原创 2017-10-30 11:14:53 · 260 阅读 · 0 评论 -
基本操作
基本操作MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成MongoDB文档类似于JSON对象,字段值可以包含其他文档、数组、文档数组安装管理mongodb环境完成数据库、集合的管理数据的增加、修改、删除、查询名词SQL术语/概念MongoDB术语/概念解释/说明databasedatabase数据库原创 2017-10-29 09:37:21 · 440 阅读 · 0 评论 -
安装
安装下载mongodb的版本,两点注意根据业界规则,偶数为稳定版,如1.6.X,奇数为开发版,如1.7.X32bit的mongodb最大只能存放2G的数据,64bit就没有限制到官网,选择合适的版本下载解压tar -zxvf mongodb-linux-x86_64-ubuntu1604-3.4.0.tgz移动到/usr/local/目录下sudo mv -r mongodb-linux-x86...原创 2017-10-29 09:38:54 · 264 阅读 · 0 评论 -
数据库操作
数据库切换查看当前数据库名称db查看所有数据库名称列出所有在物理上存在的数据库show dbs切换数据库如果数据库不存在,则指向数据库,但不创建,直到插入数据或创建集合时数据库才被创建use 数据库名称默认的数据库为测试,如果你没有创建新的数据库,集合将存放在测试数据库中数据库删除删除当前指向的数据库如果数据库不存在,则什么也不做d原创 2017-10-29 09:41:43 · 296 阅读 · 0 评论 -
集合创建
集合创建语法db.createCollection(name, options)name是要创建的集合的名称options是一个文档,用于指定集合的配置选项参数是可选的,所以只需要到指定的集合名称。以下是可以使用的选项列表:例1:不限制集合大小db.createCollection("stu")例2:限制集合大小,后面学会插入语句后可以查看效果参数cappe原创 2017-10-29 09:45:39 · 588 阅读 · 0 评论 -
数据类型
数据类型下表为MongoDB中常用的几种数据类型:Object ID:文档IDString:字符串,最常用,必须是有效的UTF-8Boolean:存储一个布尔值,true或falseInteger:整数可以是32位或64位,这取决于服务器Double:存储浮点值Arrays:数组或列表,多个值存储到一个键Object:用于嵌入式的文档,即一个值为一个文档Null:存储Null值Timest原创 2017-10-30 11:08:16 · 408 阅读 · 0 评论 -
数据操作
插入语法db.集合名称.insert(document)插入文档时,如果不指定_id参数,MongoDB会为文档分配一个唯一的ObjectId例1db.stu.insert({name:'gj',gender:1})例2s1={_id:'20160101',name:'hr'}s1.gender=0db.stu.insert(s1)简单查询原创 2017-10-30 11:09:41 · 252 阅读 · 0 评论 -
数据查询
数据查询基本查询方法find():查询db.集合名称.find({条件文档})方法findOne():查询,只返回第一个db.集合名称.findOne({条件文档})方法pretty():将结果格式化db.集合名称.find({条件文档}).pretty()比较运算符等于,默认是等于判断,没有运算符小于$lt小于或等于$lte大于$gt大于原创 2017-10-30 11:11:22 · 456 阅读 · 0 评论 -
Limit与skip
Limit方法limit():用于读取指定数量的文档语法:db.集合名称.find().limit(NUMBER)参数NUMBER表示要获取文档的条数如果没有指定参数则显示集合中的所有文档例1:查询2条学生信息db.stu.find().limit(2)skip方法skip():用于跳过指定数量的文档语法:db.集合名称.find().skip(NUMB原创 2017-10-30 11:12:30 · 1658 阅读 · 0 评论 -
投影
投影在查询到的返回结果中,只选择必要的字段,而不是选择一个文档的整个字段如:一个文档有5个字段,需要显示只有3个,投影其中3个字段即可语法:参数为字段与值,值为1表示显示,值为0不显示db.集合名称.find({},{字段名称:1,...})对于需要显示的字段,设置为1即可,不设置即为不显示特殊:对于_id列默认是显示的,如果不显示需要明确设置为0例1db.stu.fin原创 2017-10-30 11:14:21 · 309 阅读 · 0 评论 -
与python交互
与python交互点击查看官方文档安装python包进入虚拟环境sudo pip install pymongo或源码安装python setup.py 引入包pymongoimport pymongo 连接,创建客户端client=pymongo.MongoClient("localhost", 27017) 获得数据库test1db原创 2017-10-31 11:54:04 · 363 阅读 · 0 评论