- mongodb中基本的概念是 文档(字段)、集合(表)、数据库
1.查看当前数据库
db (默认为test)
2.查看所有数据库
show dbs或者show databases
3.切换数据库
use (如果数据库不存在,则创建,否则切换到指定数据库)
4.删除当前数据库(注意:先切换到要删除的数据库)
db.dropDatabase()
5.创建集合
db.createCollection(name,options)
6.查看集合
show collections
7.删除集合
db.集合名称.drop()
8.保存
db.集合名称.save(document)
9.更新
db.test2.update({name:'100cxy'},{name:'cxy100'})
10.数据查询
db.wzry.find({age:5})
db.wzry.findOne({age:5}) 查询,只返回第⼀个
db.wzry.find({age:5}).pretty() 将结果格式化
一、比较、范围运算符
- 等于
默认是等于判断,没有运算符 - 小于
db.wzry.find({ age : { $lt : 5} } ) - 小于等于
db.wzry.find({ age : { $lte : 5} } ) - 大于
db.wzry.find( { age : { $gt : 2 } }) - 大于等于
$gte (greater than equal) - 不等于
$ne (not equal) - 在范围内
db.wzry.find( {age : { $in : [4,6] } } ) - 不在范围内
db.wzry.find( { age : { $nin : [4,6] } } )
二、逻辑运算符
- 逻辑与 (and)
db.wzry.find({age:5,type:'刺客'}) - 逻辑或 (or)
db.wzry.find({$or:[{age:5},{type:'刺客'}]})
三、支持正则表达式
- 以'后'字开头
-- 第一种
db.wzry.find({name:/^后/})
-- 第二种
db.wzry.find({name:{$regex:'^后'}})
四、limit和skip
- limit()用于读取指定数量的文档
db.wzry.find().limit(2) - limit()用于读取指定数量的文档
db.wzry.find().limit(2)
五、排序
- ⽅法sort(), ⽤于对结果集进⾏排序
- db.集合名称.find().sort({字段:1,...})
- 参数1为升序排列
- 参数-1为降序排列
db.wzry.find().sort({age:1})
六、统计个数
- 方法:count() ⽤于统计结果集中⽂档条数
- db.集合名称.find({条件}).count()
- db.集合名称.count({条件})
db.wzry.find({age:{$gte:5}}).count()
db.wzry.count({age:{$gte:5}})
七、消除重复
- 方法:distinct() 对数据进行去重
- db.集合名称.distinct('去重字段',{条件})
db.wzry.distinct('type')
八、mongdb聚合
常用表达式:
$sum 计算总和, $sum:1 表示以⼀倍计数
$avg 计算平均值
$min 获取最⼩值
$max 获取最⼤值
$push在结果⽂档中插⼊值到⼀个数组中
$first根据资源⽂档的排序获取第⼀个⽂档数据
$last根据资源⽂档的排序获取最后⼀个⽂档数据
常用操作:
$group将集合中的⽂档分组, 可⽤于统计结果
$match过滤数据, 只输出符合条件的⽂档
$project修改输⼊⽂档的结构, 如重命名、 增加、 删除字段、 创建计算结果
$sort将输⼊⽂档排序后输出
$limit限制聚合管道返回的⽂档数
$skip跳过指定数量的⽂档, 并返回余下的⽂档
$unwind 将数组类型的字段进⾏拆分
九、mongo和python交互
1、导入模块
import pymongo
2、建立与MongoClient的连接
client = MongoClient('localhost',27017)
3、得到数据库
db = client.数据库名
4、得到一个集合
collection = db.集合名称
from pymongo import *
"""
插入方法:
insert_one() 传入一个字典,表示插入一个文档
insert_many() 传入一个列表,列表的元素为字典,插入多条文档
"""
def insert():
try:
# 1. 创建连接对象
client = MongoClient(host='localhost', port=27017)
# 2. 获取数据库
# 如果这个数据库不存在,就会在内存中虚拟创建
# 当在库里面创建集合的时候,就会在物理真实创建这个数据库
db = client.demo # 使用demo数据库
# 向stu集合插入数据
# 插入一条
db.stu.insert_one({'name': 'zs', 'age': 'lisi'})
# 插入多条
db.stu.insert_many([{'name': 1}, {'name': 2}])
except Exception as e:
print(e)
if __name__ == '__main__':
insert()