MongoDB --- 02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

一.基本操作

.  mongod        启动服务端   

2.  mongo        启动客户端

3.  show databses   查看本地磁盘的数据库

4.  use  库名      切换到要使用的数据库

5.  db         查看当前使用的数据库

6.  show  tables    查看当前数据库存放在磁盘上的数据表

7. use 新库名   创建数据库, 当前创建的数据库没有存放在磁盘中

8.  db.tablename 新表名     创建数据表,没有存放在磁盘中

***注:
  如果表中有数据,就自动保存在磁盘上

二.数据类型

     ObjectId :Documents 自动生成的 _id
_id:ObjectId("5cb69a23815ea7295f8bad43") 自动生成的 json数据中不包含ObjectId类型 id类型uuid
String: 字符串,必须是utf-
Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)
Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)
Double:浮点数 (没有float类型,所有小数都是Double)
Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)
Object:深度<= 如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典
Null:空数据类型 , 一个特殊的概念,None Null
Timestamp:时间戳 通常不用这个数据类型 如果存储时间 Double
Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)

  ① objectID

"_id" : ObjectId("5b151f8536409809ab2e6b26")

#"5b151f85" 代指的是时间戳,这条数据的产生时间
#"" 代指某台机器的机器码,存储这条数据时的机器编号
#"09ab" 代指进程ID,多进程存储数据的时候,非常有用的
#"2e6b26" 代指计数器,这里要注意的是,计数器的数字可能会出现重复,不是唯一的
#以上四种标识符拼凑成世界上唯一的ObjectID
#只要是支持MongoDB的语言,都会有一个或多个方法,对ObjectID进行转换
#可以得到以上四种信息 #注意:这个类型是不可以被JSON序列化的

  ②插入时

MongoDB  ---  02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

  ③显示的数据

MongoDB  ---  02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

三.增删改查(简单版)

  1.增

    db.tablename.insert({"key":"value"})  捎带手写入库和表磁盘

    官方推荐写法:
db.users.insertOne({})
db.users.insertMany([{},{},{}])

  2.删

    db.tablename.remove({})    删除所有数据
db.tablename.remove({age:}) 删除所有age==73的数据 官方推荐写法
db.users.deleteOne() 删除符合条件的第一条数据
db.users.deleteMany() 删除符合条件的所有数据

  3.改

    db.tablename.update({"name":"AlexDSB"},{"$set":{"age":}}) 只修改符合条件的一条数据
$set - set修改器 强制替换覆盖 官方推荐写法
db.tablename.updateOne() 更新符合条件的第一条数据
db.tablename.updateMany() 更新符合条件的所有数据 array+Object : db.users.updateOne({"cours.name":"装X"},{$set:{"cours.$.score":""}})
                                          # $:指选中的下标位置

  4.查

    db.tablename.find() 查询符合条件的所有数据
db.tablename.find({"name":"AlexDSB"}) db.tablename.findOne() 查询符合条件的第一条数据

四.数学比较符

     $lt : 小于 √
$lte: 小于等于 √
$gt : 大于 √
$gte: 大于等于 √ $ne : 不等于
$eq or 冒号 : 等于

示例:

MongoDB  ---  02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

MongoDB  ---  02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

MongoDB  ---  02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

五. $  的高级用法

  1. $ 查询关键字

Array数据类型会自动遍历
1. $in 或者(相同字段查询) db.users.find({age:{$in:[,]}})
2. $or 或者(不同字段查询) db.users.find({$or:[{age:},{hobby:"篮球"}]})
3. $and or 逗号 并列条件(两个或多个条件都要满足) 4. $all - Array数据类型 子集查询 db.users.find({hobby:{$all: ["罗玉凤"]}})

示例:

①array数据自动遍历列表

MongoDB  ---  02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

② $in

MongoDB  ---  02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

③ $or

MongoDB  ---  02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

④ $all

MongoDB  ---  02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

MongoDB  ---  02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

2. $ 修改器

     $set - set修改器 强制替换覆盖
$unset - 强制删除字段
$inc - 引用增加
array操作:
$push (append) 在array中追加 db.users.update({name:"AlexDSB"},{$push:{hobby:"特斯垃圾"}})
$pushAll (extend) 在array中追加列表中的所有元素 db.users.update({name:"AlexDSB"},{$pushAll:{hobby:["22寸轮毂","V8","欧林斯"]}})
$pull (remove) 在array中删除一个元素 db.users.update({name:"AlexDSB"},{$pull: {hobby:"V8"}})
$pullAll 在array中删除一堆元素 db.users.update({name:"AlexDSB"},{$pullAll: {hobby:["小敏","芙蓉姐姐"]}})
$pop pop 删除第一个 - 或 最后一个 的值 db.users.update({name:"AlexDSB"},{$pop: {hobby:}})

示例:

MongoDB  ---  02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

MongoDB  ---  02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

MongoDB  ---  02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

  3. $ 的特殊用法

    存储符合条件的元素下标索引
用于修改字段

MongoDB  ---  02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo

六.skip , sort , limit

   1. sort 排序
db.users.find({}).sort({ age: })
db.users.find({}).sort({ age: , birthday:- }) 2. limit() 选取条目
db.users.find({}).limit() 3. skip() 跳过
db.users.find({}).skip() 4. 先排序 再跳过 最后选取(不管写的是什么顺序)
db.users.find({}).limit().skip().sort({ age:- }) 5. 分页:
(page-)*num
db.users.find({}).limit(num).skip((page-)*num)

七. pymongo基本操作

import json

from pymongo import MongoClient
from bson import ObjectId    # 转换 id mc = MongoClient("127.0.0.1",)
MONGODB = mc["S18day07"] #连接数据库 res = MONGODB.users.insert_one({"name":"AlexDSB"})
print(res,res.inserted_id)
# res = MONGODB.users.insert_many([{"name":"AlexDSB"},{"name":"AlexDSB"},{"name":"AlexDSB"},{"name":"AlexDSB"},{"name":"AlexDSB"}])
# print(res,res.inserted_ids) # user = MONGODB.users.find_one({"_id":ObjectId("5cb6eb7322b9441020186701")})
# print(user.get("_id"),type(user.get("_id")))
#
# user["_id"] = str(user["_id"])
# jsonstr = json.dumps(user)
# print(jsonstr , type(jsonstr)) # json 序列化
# user = list(MONGODB.users.find({}))
# for index,item in enumerate(user):
# user[index]["_id"] = str(item.get("_id"))
# print(json.dumps(user)) # MONGODB.users.update_one({"name":"AlexDSB"},{"$set":{"age":}})
# MONGODB.users.update_many({"name":"AlexDSB"},{"$set":{"age":}}) # MONGODB.users.delete_one({"age":})
# MONGODB.users.delete_many({"age":}) # MONGODB = mc["adminn"]
# res = MONGODB.users.find_one({"name":"AlexDSB"})
# res["cours"].append({"name":"路飞学城","money":"2百亿"})
# for index,cours in enumerate(res["cours"]):
# if cours.get("name") == "鸡汤":
# res["cours"][index]["score"] =
#
# MONGODB.users.update_one({"name":"AlexDSB"},{"$set":res})

八. 偷换概念

MySql                MongoDB
DataBase == DataBase
Table == Collection     #表
Colunm == Field #字段
Row == Documents #数据
上一篇:故障处理:磁盘扩容出错:e2fsck: Bad magic number in super-block while trying to open /dev/vdb1


下一篇:bzoj5164: 餐厅计划问题(三分+贪心)