目录
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()
         


















