终端命令:
在线安装:
sudo apt-get install mongodb
默认安装路径 : /var/lib/mongodb
配置文件 : /etc/mongodb.conf
命令集 : /usr/bin /usr/local/bin
下载解压:
PATH=$PATH:/opt/mongodb.../bin
export PATH
将以上两句写入 /etc/rc.local
备份:
mongodump -h 主机地址 -d 库名 -o 文件名
恢复:
mongorestore -h 主机地址: 端口号 -d 库名 文件路径
mongod --port 8080 设置端口(默认27017)
mongo 进入mongo shell
quit() exit ctrl+c/z/d 退出mongo shell
mongostat 监测速度 (command 命令次数 flushes IO次数 vsize 虚拟内存)
mongotop 监测时长 ( ns 数据集合、 total 总时长、 read 读时长 、write 写时长)
Mongo命令:
use 库名 创建/选择库
show dbs 查询库
db.dropDatabase() 删除库
db.createCollection(“集合名”) 创建集合
db.集合名.insert(...) 创建集合
show collections 查询集合
show tables 查询集合
db.getCollection("集合名") 查询集合所在库
db.集合名.drop() 删除集合
db.集合名.renameCollion("新集合名") 重命名集合
db.集合名.insert({name:"tom"..}) 插入文档
db.集合名.save({name:"tom",...}) 插入文档
db.集合名.insert([{}, {}...]) 插入多个文档
db.集合名.save([{} {}...]) 插入多个文档(加_id键会覆盖原文档)
db.集合名.find(查找条件,域) 查找文档
db.集合名.findOne(查找条件,域) 只显示找到的第一条文档
db.集合名.distinct("集合名") 查看集合内某个域的取值范围
db.集合名.remove(query,justOne) 删除指定条件文档(默认false删除所有)
db.集合名.update(query, update,upert,multi) 修改文档
db.集合名.find().count() 计数统计查询结果文档的个数
db.集合名.find().pretty() 将查询结果格式化显示
db.集合名.find().limit(n) 显示查找结果的前n条结果
db.集合名.find().skip(n) 跳n过前条显示后面的结果
db.集合名.find().count() 计数统计查询结果文档的个数
db.集合名.find().sort({filed:1/-1,...}) 排序 1:升序, -1:降序,第项相同按照第项二排序
db.集合名.find({'域名.下标':内容{_id:0}) 操作组中的某一项
db.集合名.find({"外域名.内部文档域":内容}, {_id:0}) 操作内部文档(Object)的域
db.集合名.ensureIndex({域:1/-1}) 创建索引(1:正向索引 -1:反向)
db.集合名.getIndexes() 查看某个集合中的索引
db.集合名.ensureIndex({域:1/-1}},{name:'索引名'}) 自定义索引名称
db.集合名.dropIndex(({域:1/-1}) 删除索引
db.集合名.dropIndex("索引名") 删除索引
db.集合名.dropIndexes() 删除所有索引(默认_id索引无法删除)
db.集合名.ensureIndex({域名1:1/-1,域名2:1/-1}) 创建符合索引 更节省空间
db.集合名.find({'数组.下标':值},{_id:0}) 如果对数组创建索引 查找值也属于索引查找
db.集合名.ensureIndex({域:1/-1},{unique:true}) 创建唯一索引
db.集合名.ensureIndex({域:1/-1},{sparse:true}) 创建稀疏索引
db.createCollection('集合名',{capped:true,size:10000,max:3}) 创建固定集合
比较操作符:
$eq 等于
$lt 小于(字符串也可以比较大小)
$lte 小于等于
$gt 大于
$gte 大于等于
$ne 不等于
$in 在什么里(in)
$nin 不在什么里(not in)
逻辑操作符:
$and 与
query内如果多个条件用逗号隔开默认就是and关系
$or 或
$not 非
$nor 既不也不
数组操作符:
$size 只显示指定个size个数的文档]
$all 查找数组中包含多项的
$slic 取数组中部分显示,在域(field)中声明
其他query查询:
$exists 判断一个域是否存在
$mod 余数查找
$type 数据类型查找
修改操作符:
$set 修改一个直 不存在则添加
$unset 删除一个域
$rename 修改域名
$setOnInsert 第三个参数为true作为补充插入数据 否则无用
$inc 加减修改器可以使整数小数正数负数
$mul 乘法修改器可以使整数小数正数负数
$min 设置域的值为上线 超过min修改为min
$max 设置域的值为下线 小于max修改为max
数组修改符:
$push 向数组中添加一项
$pushAll 向数组中添加多项
$pull 从数组中删除一项
$pullAll 从数组中删除多项
$each 对多个值进行逐一操作
$position 指定插入位置(配合each使用)
$sort 对数组进行排序(配合each使用)
$pop 弹出一项(1:弹出第一项 -1:最后一项)
$addToSet 向数组中添加一项(不允许重复)
时间类型:ISODate()
nuw Date() 自动生成当前时间
Date() 获取当前计算机时间格式字符串
ISODate() 生成当前时间
ISODate("2018-01-01 12:12:12") 自定义时间
ISODate("20180101 12:12:12") 自定义时间
ISODate("20180101") 自定义时间
valueOf() 生成时间戳
null 如果某个域的值不存在可以设置为null
修改参数:
query: 筛选要查找要修改的文档
update: 将筛选的文档修改为什么内容需要配合修改操作符
upsert: bool值 默认false 如果query的文档不存在则不进行任何操作
设置为true 如果query和文档不存在 就根据query和update插入新文档
multi: bool值 默认false 如果query文档有多条则只修改第一条
设置为true 则修改所有符合条件的文档
查找参数:
query(条件):
键值对的形式给出要展示的文档
field(域):
以键值对对的形式给出要展示或不展示的域
0为值不显示该域 1为值显示该域
如果使用0设置某些域不显示默认其他域显示
如果使用1设置某些域显示默认其他域不显示
*_id 只有设置为0才不显示否则默认显示
除_id以外,其他域必须同时设置0或1
索引:
指建立指定键值及所在文档中存储位置的对照清单
使用索引可以方便我们进行快速查找,减少数据遍历次数,从而提高查找效率
覆盖索引:
查找操作需要获取的域,只有索引域没有其他域。
此时索引表可以直接提供给用户想要的内容,提高查找效率
唯一索引:
创建的索引,索引域值无重复,此时可以创建唯一索引
唯一索引数据结构更加便于查找
稀疏索引:
只针对有指定域的文档创建索引表,如果某个文档没有该域则不会插入到索引表中
索引约束:
1. 索引表也需要占用一定的磁盘空间
2. 当数据发生更新时索引表也要随之更新
综上 :
1. 数据量比较大时更适合创建索引,数据量较小时没有必要付出索引代价
2. 频繁进行查找操作而不是更新删除插入操作,此时更适合使用索引
固定集合:
大小固定的集合,称之为固定集合
插入速度更快,顺序查找更快
可以控制集合的空间大小
能够自动淘汰早期数据
参数:
capped:true 创建固定集合
size:10000 固定集合的大小 字节数
max :1000 表示最多多少条文档
- Python全栈 MongoDB 数据库(概念、安装、创建数据)
什么是关系型数据库? 是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据, 同时也是一个被组织成一组拥有正式描述性的表格( ...
- Python全栈 MongoDB 数据库(聚合、二进制、GridFS、pymongo模块)
断网了2天 今天补上 聚合操作: 对文档的信息进行整理统计的操作 返回:统计后的文档集合 db.collection.aggregate() 功能:聚合函数,完成聚合操作 参数:聚合条件,配 ...
- Python全栈 MongoDB 数据库(数据的修改)
修改操作符的使用 $set 修改一个域的值,增加一个域 阿哲年龄修改为33 db.class1.update({name:'阿哲'},{$set:{age:33}}) 如果sex域不存在则 ...
- Python全栈 MongoDB 数据库(数据的查找)
非关系型数据库和关系型数据库的区别? 不是以关系模型构建的,结构自由 非关系型数据库不保证数据一致性 非关系型数据库可以在处理高并发和海量数据时弥补关系数据库的不足 非关系型数据库在技术上没有关系 ...
- 巨蟒python全栈开发数据库前端6:事件onclick的两种绑定方式&&onblur和onfocus事件&&window.onload解释&&小米商城讲解
1.回顾上节内容(JavaScript) 一.JavaScript概述 1.ECMAScript和JavaScript的关系 2.ECMAScript的历史 3.JavaScript是一门前后端都可以 ...
- Python全栈开发之路 【第四篇】:Python基础之函数
本节内容 函数def: 1.位置参数,默认参数 2.位置参数,关键参数 3.如果参数中出现 *users,传递的参数就可以不再是固定的个数, 传过来的所有元素进行打包成元组 *args,**kwarg ...
- Python全栈开发之路 【第七篇】:面向对象编程设计与开发(1)
本节内容 一.编程范式 编程指的是写程序.敲代码,就是指程序员用特定的语法.数据结构和算法编写的代码,目的是来告诉计算机如何执行任务的. 在编程的世界里最常见的两大流派是:面向过程与面向对象.“功夫的 ...
- 巨蟒python全栈开发数据库攻略1:基础攻略
1.什么是数据库? 2.数据库分类 3.数据库简单介绍 4.安装数据库 5.修改root密码 6.修改字符集 7.sql介绍 8.简单sql操作
- 巨蟒python全栈开发数据库前端1:HTML基础
1.HTML介绍 什么是前端? 前端就是我们打开浏览器的页面.,很多公司都有自己的浏览器的页面,这个阶段学习的就是浏览器界面 比如京东的界面:https://www.jd.com/ 引子 例1 soc ...
随机推荐
- HDU 4864 Task(经典贪心)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=4864 Task Time Limit: 4000/2000 MS (Java/Others) M ...
- ARM v7-A 系列CPU的MMU隐射分析
ARM v7-A 系列CPU的MMU隐射分析 摘要:ARM v7-A系列的CPU加入了很多扩展,如多核处理器扩展.大物理地址扩展.TrustZone扩展.虚拟化扩展.若支持大的物理地址,则必须支持多核 ...
- 小K的农场(差分约束,spfa)
题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b至少多种植了c个单位的作 ...
- 19-3-4 Python进制转换;bool str int三者之间的转换;字符串的索引,切片;for循环的使用
进制转换: 二进制转十进制: 0010 1111 = 1*2**0+1*2**1+1*2**2+1*2**3+1*2**5 十进制转换二进制: 用十进制数除2逆序取余 --->101010 布 ...
- springsource-tool-suite插件下载
下载地址: https://spring.io/tools3/sts/all/ 下载页面上的 update sites archives文件
- VMware10安装CentOS7
先去网上下载一个VMware的破解版或者激活版,安装配置这里就不介绍了自行下载安装,基本过程相当于windows下安装个软件而已. CentOS7镜像下载就下阿里云站点的这是链接 http://mir ...
- XSS攻击 && CSRF攻击 基础理解
一个网站,不管多么的帅气,多么的风骚,如果你不安全,那始终都是一个弟弟啊~ 今天又看了下XSS和CSRF攻击的文章,我也想发点什么普及下大家的安全意识,毕竟作为一名拥有伟大梦想的程序员,基本的安全意识 ...
- OpenCV-Python 视频读取
import numpy as np import cv2 # 读取视频文件 cap = cv2.VideoCapture('./law.mp4') # 或者电影每秒的帧数 fps = cap.get ...
- 大数据技术原理与应用——大数据处理架构Hadoop
Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构. Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以 ...
- 【Android】添加依赖包
貌似好像不知一种方法,以后有时间再研究,下面是其中的一种方法