目录
1.概念
2.操作
2.1数据库操作
2.2集合操作
2.3数据操作
3.查询
4.常用技术
5.python与MongoDB
1.概念
MongoDB是一种非关系型数据库(NoSQL),它以灵活的文档存储格式(BSON)和强大的查询能力而闻名,类似json,不支持表连接。
-
文档(Document):MongoDB中的数据存储单位,类似于关系型数据库中的行。文档是以BSON(Binary JSON)格式表示的,可以容纳不同结构和类型的数据。
-
集合(Collection):一组相关文档的集合,类似于关系型数据库中的表。每个集合都有一个唯一的名称,用于组织和存储文档。
-
字段:字段是文档中存储数据的基本单位,类似于关系型数据库中的列。
2.操作
检测是否安装MongoDB: win+r,输出cmd,输入mongo
2.1数据库操作
显示所有数据库 show dbs (只显示非空数据库)
创建数据库 use 数据库名(如果该数据库不存在,则会创建;存在就直接切换)
删除数据库 ,先切换到数据库, db.dropDatabase()
2.2集合操作
创建集合 db.createCollection("集合名") 不需要创建,使用时会自动创建
删除集合 db.集合名.drop()
查看所有集合 show collections
2.3数据操作
1.查询数据
find 找到所有
db.teacher.find()
findOne 只找一个
2. 插入
insert 可以插入一个或多个
db.teacher.insert({"name":"t2"})
insertOne 可以插入一个
insertMany 可以插入多个
3. 删除
deleteOne 删除一个
db.teacher.deleteOne({"name":"t2"})
deleteMany 删除多个
4. 修改
update 修改一个
db.teacher.update({"age":21},{$set {"name":"t3"}})
updateOne 修改一个
updateMany 修改多个
3.查询
1.比较运算符
$gt > find({"字段":{$gt : 20}})
$gte >=
$lte <=
$lt <
$ne !=
2. 逻辑运算符
并且 {“key”:value,"key":value}
或者 {$or:[{"age":20},{"age":15}]}
find($or:[{"age":20},{"age":15}])
3. 成员
$in db.teacher.find({"age":{$in : [21,30]}})
4. 正则
db.teacher.find({"name":/.3/})
db.teacher.find({"name":/^t/}) name以t开头
db.teacher.find({"name":/.\d/}) 数字
5.自定义 find({$where:function(){ return this .age < 20}})
4.常用技术
1.排序
db.teacher.find().sort({"字段":1, "字段":-1})
1升序 -1降序
2.分页
.limit(n) 显示n页
db.teacher.find().limit(2)
.skip(m) 显示m个
db.teacher.find().limit(1).skip(2)
3.统计
.count()
db.teacher.find().count()
.find()可有可无
4. 投影
find({},{列名:1, 列名2: 0})
1显示列 ,_id默认显示
0不显示列
db.teacher.find({},{"_id":0})
5. 聚合
对数据处理,将上一阶段的处理结果转交给下一个集合
aggregate
$match 过滤
db.teacher.aggregate([{"$match":{"name":"t1"}}])
$group 分组
db.teacher.aggregate([{"$group":{_id:"$name"}}])
5.python与MongoDB
1.使用模块pymongo
pip insatll mongo
2.使用流程
导入模块:import pymongo
创建连接:client = pymongo.MongoClient()
找到数据库:db = client.get_database("myk")
找到集合:collection = db.get_collection("teacher")
CURD:增删改查
关闭连接:client.close()
# 1.导入模块
import pymongo
# 2.构件连接
client = pymongo.MongoClient()
# 3.找数据库
db = client.get_database("myk")
# 4. 集合
collection = db.get_collection("teacher")
# 5.查找
cursor = collection.find({"$or": [{"age": 21}, {"age": {"$gte": 18}}]})
for data in cursor:
print(data)
data = collection.find_one({"$or": [{"age": 21}, {"age": {"$gte": 18}}]})
print(data.get("age"))
# 文档
document = collection.find_one_and_delete({"age": 18})
print(document)
document = collection.find_one_and_update({"age": 30}, {"$set": {"name": "t4"}})
print(document)
# 6.插入
result = collection.insert_one({"name": "t2"})
print(result.inserted_id)
result = collection.insert_many([{"age": 45}, {"age": 45, "name": "t2"}])
print(result.inserted_ids)
# 7.更新
result = collection.update_one({"age": 45}, {"$set": {"name": "t5"}}, upsert=True)
print(result.matched_count, result.modified_count, result.upserted_id)
result = collection.update_many({"age": {"$gt": 10}}, {"$set": {"name": 100}})
# 8.删除
result = collection.delete_one({"age":45})
print(result.deleted_count)
result = collection.delete_many({"age":45})
print(result.deleted_count)
# 释放连接
client.close()