MongoDB的基础命令
MongoDB的介绍
MongoDB: 是一个基于bson(二进制json)的NoSQL数据库
MongoDB的三要素:
数据库: 类似于MYSQL的数据库
集合: 类似于MYSQL的表
文档: 类似于mysql的记录(一行数据)
终端
操作数据库的命令:
查看当前所在数据库:db
查看所有的数据库:show dbs/show databases
切换数据库:use 数据库名(切换到没有的数据库, 会自动创建)
删除当前数据库:db.dropDatabase()
操作集合的命令:
创建集合:db.createCollection('集合名') / db.集合名.insert(数据)
数据为json格式 --> {键:'值'}
查看集合:show collections
删除集合所有数据:db.集合名.drop()
增删改查:_id字段如果没有手动指定会自动添加
插入(insert):db.集合名称.insert(文档)
db.student.insert({'_id':1,name:'zhangsan'})
保存(save):db.集合名称.save(文档)
db.student.save({'_id':1,name:'zhangsan'})
insert 与 save 的异同点:
相同点:如果没有指定_id,都会生成一个ObjectID类型的_id字段
区别: 存在相同的_id字段, insert报错, save覆盖原有操作
更新:db.集合名称.update(<query>,<update>,{multi:<boolean>})
query:更新条件
update:更新的数据,默认覆盖原有数据,如果要部分更新需要使用 --> $set
multi:是否更新多条,默认只更新一条,如果要更新多条 --> {multi:true}
删除:db.集合名称.remove(<query>,{justOne:<boolean>})
query:删除数据的条件,默认删除所有满足条件的数据
justOne:用于指定是否只删除一条
如果指定为True, 则只删除一条 --> {justOne:true}
数据查询:
查询所有满足条件的数据:db.集合名称.find({条件文档})
查询第一个满足条件的数据:db.集合名称.findOne({条件文档})
比较运算符:
等于: --> {age:18}
小于:--> $lt --> {age:{$lt:18}}
小于等于:--> $lte
大于:--> $gt
大于等于:--> $gte
不等于:--> $ne
逻辑运算符:
and: --> db.集合名称.find({条件1,条件2}) --> {age:{$gt:18},gender:true}
or: --> $or --> db.集合名称.find({$or:[{条件1},{条件2}])
混合查询
范围运算符:
$in:在某个范围,不是区间,指列表里的数字 --> {age:{$in:[19,22,25]}}
$nin:不在某个范围 --> $nin:[,]
正则:
// --> {name:/^张/} --> 只能在终端使用
$regex --> {name:{$regex:'^张'}} --> 可在python中使用
分页查询:先跳过再限制 --> 效率高
limit():用于读取指定数量的文档
db.集合名称.find().limit(数量)
skip():用于跳过指定数量的文档
db.集合名称.find().skip(数量)
显示部分字段:db.集合名称.find({},{字段名:1,字段名:1,_id:0})
_id默认是显示的,如果不显示 --> _id:0 ,其他字段不显示则不写
排序:对集合进行排序,1:升序,-1:降序
sort() --> db.集合名称.find({文档条件}).sort({字段:1/-1,字段:1/-1...})
统计个数:
db.集合名称.find({文档条件}).count()
db.集合名称.count({文档条件})
消除重复:
distinct():对数据进⾏去重 --> db.集合名称.distinct('去重字段',{文档条件})
聚合:
db.集合名.aggregate({$group:{_id:'$分组字段',显示字段:{$聚合函数:值}}})
显示某些字段:$push --> 生成一个列表
显示整个文档:$$ROOT
索引:
建立索引:db.集合名.ensureIndex({属性名:1}) 1:升序,-1:降序
建立唯一索引:默认情况索引字段是可以重复的,可以指定索引唯一
db.集合名.ensureIndex({属性名:1},{unique:true})
查看当前集合的所有索引:db.集合名.getIndexes()
删除索引:db.集合名.dropIndex({索引字段:1}
测试索引效率:
python与MongoDB交互
1. 安装第三方插件:pip install pymongo
2. 导包:
from pymongo import MongoClient
3. 实例化mongo客户端对象:
client = MongoClient()
4. 指定集合:
collection = client['库名']['集合名']
5. 增删改查
添加一条数据: insert_one(字典)
collection.insert_one({'_id': 8, 'name': '大乔', 'hometown': '长安', 'age': 20, 'gender': False})
添加多条数据: insert_many(字典列表)
ls = [{'_id': 9, 'name': '凯', 'hometown': '长安', 'age': 25, 'gender': True},
{'_id': 10, 'name': '苏烈', 'hometown': '长安', 'age': 30, 'gender': True},
{'_id': 11, 'name': '孙策', 'hometown': '东吴', 'age': 29, 'gender': True}
]
collection.insert_many(ls)
查找一条数据: find_one(条件字典)
print(collection.find_one({'hometown': '长安'}))
查找全部数据: find, 返回一个游标对象, 只能遍历一次
ret = collection.find({'hometown': '长安'})
for i in ret:
print(i)
更新一条数据:注意使用$set命令: update_one
collection.update_one({'name': '孙尚香'}, {'$set': {'name': '甄姬'}})
更行全部数据: update_many
collection.update_many({'gender':False},{'$set':{'age':18}})
删除一条数据: delete_one
collection.delete_one({'name':'大乔'})
删除全部数据: delete_many
collection.delete_many({'gender':True})
client .close()
MongoDB的基础命令的更多相关文章
- MongoDB 部署 & 基础命令
MongoDB 官方文档 MongoDB 介绍 Mongodb 由 C++ 语言编写的,是一个基于分布式文件存储的开源数据库系统. 是专为可扩展性,高性能和高可用性而设计的数据库, 是非关系型数据库中 ...
- mongodb常用基础命令
查看当前使用的数据库,也可以直接用dbdb.getName() 显示当前db状态db.stats() 当前db版本 db.version() 查看当前db的链接机器地址db.getMongo() 查看 ...
- MongoDB基础命令及操作
MongoDB:NoSQL数据库 MongoDB中的重要指示点 MongoDB中的三要素 数据库 集合 文档 MongoDB中的数据存储是以Bson的形式存储的,Bson是二进制的json,所以看上去 ...
- MongoDB 学习笔记一 安装以及基础命令
一.MongoDB安装配置 1.获取最新版本号: wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.2.tgz 2.解压缩就可 ...
- 2、链接数据库+mongodb基础命令行+小demo
链接数据库并且打印出数据的流程:1.在CMD里面输入 mongod 2.在CMD里面输入 mongo 3.在输入mongodb命令行里面进行操作,首先输入 show dbs 来查看是否能够链接得上库4 ...
- MongoDB 目录分析、基础命令、参数设置
目录分析 1.整体目录 以msi默认的data.log路径安装,才会有data.log文件夹. 2.bin目录 3.log目录 基础命令 1.服务器端基础命令 net start MongoDB ...
- win7 64位下 mongodb安装及命令运行
有网友老催我把框架加上mongodb的支持,于是偶尔抽空看了看相关的文章. 今天有缘,就把mongodb安装了一下,中间遇到了小小的问题,So,把整个过程记录一下: 1:先上官网:http://www ...
- [整理]MongoDB 经常使用命令总结
MongoDB 经常使用命令总结 简单的的增删改查数据 在查询结果中指定显示或者不显示某个字段 比如,我们希望在 lessons 集合中查找全部数据,可是不希望在返回结果中包括 slides 字段:由 ...
- 一点MongoDB的基础及mongodb在mac上的安装
最近发现维持写博客的习惯还是挺困难的,尤其对我来说,计划好的事过了好长时间才想到要去做. 这段时间一直在熟悉MongoDB,首先我是参考的这一篇:8天学通MongoDB 原博主写得非常好,我这里就 ...
随机推荐
- python编程基础之十一
循环语句:周而复始,在满足某个条件下,重复做相同或类型的事情, 循环语句三要素:循环条件 + 循环体 + 循环条件改变while 条件 : 循环体 循环条件改变... while 条件 : 循环体 循 ...
- .NET Core使用gRPC打造服务间通信基础设施
一.什么是RPC rpc(远程过程调用)是一个古老而新颖的名词,他几乎与http协议同时或更早诞生,也是互联网数据传输过程中非常重要的传输机制. 利用这种传输机制,不同进程(或服务)间像调用本地进程中 ...
- 从零开始的vue学习笔记(八)
前言 今天花一天时间阅读完Vue Router的官方文档的基础部分,简单的做一下总结和记录 Vue Router是什么 Vue Router 是 Vue.js 官方的路由管理器,用于构建单页应用(SP ...
- Redis实现分布式文件夹锁
缘起 最近做一个项目,类似某度云盘,另外附加定制功能,本人负责云盘相关功能实现,这个项目跟云盘不同的是,以项目为分配权限的单位,同一个项目及子目录所有有权限的用户可以同时操作所有文件,这样就很容易出现 ...
- 代码审计-(Ear Music).任意文件下载漏洞
0x01 代码分析 后台地址:192.168.5.176/admin.php admin admin 安装后的界面 在后台发布了一首新歌后,前台点进去到一个“下载LRC歌词”功能点的时候发现是使用re ...
- 代码审计-Beescms_V4.0
Beescms_V4.0代码审计源于一场AWD线下比赛的漏洞源码 看了别的师傅的文章发现这个源码也非常简单 ,所以今晚简单审计过一遍. 0x01 预留后门 awd首先备份源码,然后下载下来查杀后门, ...
- Hadoop和YARN :map+shuffle+reduce走读
今天做了一个hadoop分享,总结下来,包括mapreduce,及shuffle深度讲解,还有YARN框架的详细说明等. v\:* {behavior:url(#default#VML);} o\:* ...
- Open vSwitch系列之一 Open vSwitch诞生
Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs 2006年,SDN诞生于美国GENI项目资助的斯坦福大学Clean Slate课题 ...
- 一个简洁漂亮的jQuery拖放排序插件DDSort
拖放排序是WEB应用中常见的功能.虽然网上有很多别人已经造好的轮子,但是就我个人而言,没事就喜欢研究原理,自己造轮子,不管强大与否,简洁够用就是我的目标,再一个就是自己写的东西,应用起来得心应手,修改 ...
- ESP8266开发之旅 网络篇⑬ SPIFFS——ESP8266 SPIFFS文件系统
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...