Mongo小结
开启mongo的姿势:
cd /usr/local/mongo/bin(mongo的文件目录的bin目录下)
sudo ./mongod (开启mongo服务)
再新开一个终端
cd /usr/local/mongo/bin
sudo ./mongo (进入mongo数据库)
数据库操作:
use 数据库名字 使用/创建数据库
show dbs 查看所有的数据库
db.dropDatabase() 删除当前的数据库
db 查看当前数据库
集合操作:
- 不手动创建集合: 向不存在的集合中第⼀次加⼊数据时, 集合会被创建出来
- 手动创建结合:
- db.createCollection(name,options)
- db.createCollection("stu")
- db.createCollection("sub", { capped : true, size : 10 } )
- 参数capped: 默认值为false表示不设置上限,值为true表示设置上限
- 参数size: 当capped值为true时, 需要指定此参数, 表示上限⼤⼩,当⽂档达到上限时, 会将之前的数据覆盖, 单位为字节
- 查看集合:show collections
- 删除集合:db.集合名称.drop()
- 检查集合是否有上限: db.集合名.isCapped()
数据操作:
- 增
db.集合名.insert() db.user.insert({"name":"UZI", "age": "18" })
db.集合名.save() db.user.save()
- 改
db.集合名.update(<query> ,<update>,{multi: <boolean>})
参数query:查询条件
参数update:更新操作符
参数multi:可选, 默认是false,表示只更新找到的第⼀条记录, 值为true表示把满⾜条件的⽂档全部更新
db.user.update({"name":"UZI"},{"name":"MLXG"}) 将整个数据改为第二个{}里的内容
db.user.update({"name":"UZI"},{$set:{"name":"hys"}}) 将数据中的某个字段改为想改的值
db.user.update({},{$set:{gender:0}},{multi:true}) 将数据中的对应的值更改
- 删
db.集合名.remove(<query>,{justOne: <boolean>})
参数query:可选,删除的⽂档的条件
参数justOne:可选, 如果设为true或1, 则只删除⼀条, 默认false, 表示删除多条
db.user.remove({"name": "UZI"}, {justOne: <boolean>})
- 基本查询
⽅法find(): 查询
db.集合名称.find({条件⽂档})
⽅法findOne():查询,只返回第⼀个
db.集合名称.findOne({条件⽂档})
⽅法pretty(): 将结果格式化
db.集合名称.find({条件⽂档}).pretty()
- 条件查询
比较查询
- 等于: 默认是等于判断, 没有运算符
- ⼩于:
$lt (less than)
- ⼩于等于:
$lte (less than equal)
- ⼤于:
$gt (greater than)
- ⼤于等于:
$gte
不等于:
$ne
db.stu.find({ age:{ $gte:18 } }) 查询年龄大于等于十八的
db.stu.find({ time:{ $gte: ISODate("2018-05-11T13:58:51.122Z") } }) 时间大于条件的结果
- 逻辑运算查询
- 逻辑与
db.stu.find({ age:{ $gte:18 }, name:UZI })
- 逻辑或 or:使⽤$or, 值为数组
db.stu.find({ $or:[{age: { $gte:18 } }, { gender: true } ], name:UZI }) 查询年龄大于18或者性别为男,并且姓名为UZI的
p.p1 { margin: 0; font: 12px Courier; color: rgba(0, 0, 0, 1); -webkit-text-stroke: #000000 }
span.s1 { font-kerning: none }
- 范围运算查询
使⽤
$in
,$nin
判断数据是否在某个数组内
db.stu.find({ age : { $in: [10,20,30] } }) 查询年龄为10,20,30的结果
- 正则表达式查询
- 使⽤//或$regex编写正则表达式
db.stu.find( {name: /^andy/ } ) 查询姓名以andy开始的
db.stu.find( { name: {$regex: '768$' } } ) 查询姓名以768结尾的
- skip 和 limit
- limit( ) ⽤于读取指定数量的⽂档
- skip( ) ⽤于跳过指定数量的⽂档
db.stu.find().skip(10) 跳过前十条查询结果
db.stu.find().limit(10) 查询十条结果
- limit()和skip()同时使用,先使用skip在使用limit
db.stu.find().skip(10).limit(10) 和 db.stu.find().limit(10).skip(10) 查询结果相同 先跳过前十条,在查询十条
- 投影
在查询到的返回结果中, 只选择必要的字段,参数为字段与值, 值为1表示显示, 值为0不显 特别注意: 对于_id列默认是显示的, 如果不显示需要明确设置为0
db.stu.find( { }, {name:1,age:1 }) 查询结果只显示name和age字段
- 排序
- ⽅法sort(), ⽤于对 集进⾏排序,参数1为升序排列 参数-1为降序排列
db.stu.find().sort({ gender:1, age:-1 })
- 统计个数
- ⽅法count()⽤于统计结果集中⽂档条数
db.stu.find().count() 统计结果的次数
db.stu.count() 统计结果的次数
- 去重
- 方法distinct()用于对查询结果去重
db.stu.distinct("hometown", {age:{$gte:18} }) 对年龄大于18的结果以hometown去重
关闭mango的正确姿势:
use admin
db.shutdownServer()
mongoDB的备份与恢复
mongo备份语法:mongodump -h dbhost -d dbname -o dbdirectory
- -h:服务器地址,也可以指定端口号
- -d:需要备份的数据库名称
- -o:备份的数据存放位置,此目录中存放着备份出来的数据
实例:mongodump -h 192.168.196.128:27017 -d test1 -o ~/Desktop/test1bak
mongo恢复语法:mongorestore -h dbhost -d dbname --dir dbdirectory
- -h:服务器地址
- -d:需要恢复的数据库名称
- --dir:备份的数据的位置
实例:mongorestore -h 92.168.196.128:27017 -d test2 --dir ~/Desktop/test1bak/test1
mongoDB的导入和导出
导出语法: mongoexport -h dbhost -d dbname -c colname -o filename --type json/csv -f field
-h
: 服务器地址-d
: 数据库名-c
: 集合名-o
: 导出文件名--type
: 文件类型,默认json格式,可选数据类型json,csv-f
: 需要导出的字段,导出为json格式的数据时可以不指定导出哪些字段,默认全部,导出成csv文件是必须指定
示例:mongoexport -h 192.168.196.128:27017 -d test2 -c col1 -o test1_col1 [--type csv -f name,age,number]
导出语法: mongoimport -d dbname -c colname --file filename [--headerline --type json/csv -f field]
-h
: 服务器地址-d
: 数据库名-c
: 集合名-o
: 导出文件名--type
: 文件类型,默认json格式,可选数据类型json,csv-f
: 需要导出的字段,导出为json格式的数据时可以不指定导出哪些字段,默认全部,导出成csv文件是必须指定
示例:mongoexport -h 192.168.196.128:27017 -d test2 -c col1 -o test1_col1 --type csv -f name,age,number
Mongo小结的更多相关文章
- mongo 操作小结
这里总结一下mongo常用操作语句,分享给大家和我自己~ 打印系统,数据库,集合的信息 db.stats() 打印数据库状态 db ...
- mongo数据库使用小结
db.userId5555.aggregate({$unwind:"$tcjl"},{$match:{"_id":"0e549864-2a56-43c ...
- MongoDB使用小结:一些不常见的经验分享
最近一年忙碌于数据处理相关的工作,跟MongoDB打交道极多,以下为实践过程中的Q&A,后续会不定期更新补充. 另有<MongoDB使用小结:一些常用操作分享>,注:本文完成时Mo ...
- MongoDB使用小结:一些常用操作分享
本文整理了一年多以来我常用的MongoDB操作,涉及mongo-shell.pymongo,既有运维层面也有应用层面,内容有浅有深,这也就是我从零到熟练的历程. MongoDB的使用之前也分享过一篇, ...
- mongo 学习笔记
mysql语句 : ' ,,),(,,) mongo语句: db.}}).limit() db."}) db.}}) 条件操作符1 mongodb中的条件操作符有: (>) 大于 ...
- Canal使用小结
Canal使用小结 之前公司存在mysql数据同步mongo的需求,可以有多种实现方式,比如硬编码,发送消息等.公司选择的是Canal中间件,最近有空来研究下他的使用方式,对于mysql数据变更监听有 ...
- 数据库新秀 postgresql vs mongo 性能PK
前几天看了一篇文章<High Performance JSON PostgreSQL vs. MongoDB> 发布在Percona Live Europe 2017 作者是<Dom ...
- mongo的身份验证和授权
问题来源 刚装好的mongo,准备登陆进去测一把的,结果就给我报这个错,鄙人是新手,还不太清楚这个,现学一下~ Mongo的身份验证 在上一篇安装mongo的博客中(https://www.cnblo ...
- Mongo DB命令简介
引言 最近在学习MongoDB 总结了一些命令及常用的东西做整理 常用目录文件介绍 mongod 数据库部署命令 mongo 连接mongodb数据库而使用的命令 mongoimport 导入 ...
随机推荐
- C#3新增语法特性
C#3,.Net Framework 3.5 ,Visual Studio 2008, CLR 3.0 C#3.0新引进的语法基于.Net Framework 3.5.主要引进的语法:Linq,隐式类 ...
- HTML+CSS系列:CSS选择器(标签、ID、类、通配符、后代、子元素、并集、伪类)
一.标签选择器 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- 内网渗透 day8-linux提权和后门植入
linux提权和后门植入 目录 1. 脏牛漏洞复现 3 (1) 去网上把代码复制然后touch一个.c文件,vi或者vim打开将代码复制进去保存 3 (2) 进入shell然后从kali开的apach ...
- spring源码概览
阅读spring源码需要具备的基本技能: 1,设计模式(工厂模式,单例模式,代理模式,模板模式,观察者模式,装饰器模式,适配器模式) 2,数据结构和算法(栈,队列,树以及一些基本的算法) 3,反射(如 ...
- 预训练模型——开创NLP新纪元
预训练模型--开创NLP新纪元 论文地址 BERT相关论文列表 清华整理-预训练语言模型 awesome-bert-nlp BERT Lang Street huggingface models 论文 ...
- Go语言内存分配(简述 转)
在Go语言里,从内存的分配到不再使用后内存的回收等等这些内存管理工作都是由Go在底层完成的.虽然开发者在写代码时不必过度关心内存从分配到回收这个过程,但是Go的内存分配策略里有不少有意思的设计,通过了 ...
- 极客mysql02
mysql 一条更新语句的执行过程: 1.首先客户端通过tcp/ip发送一条sql语句到server层的SQL interface 2.SQL interface接到该请求后,先对该条语句进行解析,验 ...
- 位图bitmap应用
所有比特的编号方法是,从低字节的低位比特位开始,第一个bit为0,最后一个bit为 n-1. 比如说,现在有个数组是这样子的,int a[4],那么a[0]的比特位为0--31a[1]的比特位为32- ...
- Scrum转型(一) 为什么敏捷和Scrum
1.1 为什么敏捷 由于传统的瀑布模型管理方法无法满足现代某些软件产品开发过程的特点,我们需要使用敏捷的方法(例如,Scrum是一个让我们关注于在短时间里交付高质量商业价值的敏捷框架). 需求频繁变动 ...
- level2行情是什么意思?
level2行情是由上海证券交易所推出的实时行情信息收费服务产品,主要提供在上海证券交易所上市交易的证券产品的实时交易数据,包括十档行情,买卖队列,逐笔成交,委托总量和加权价格等数据. 投资者根据其功 ...