一.基本操作
1. mongod 启动服务端
2. mongo 启动客户端
3. show databses 查看本地磁盘的数据库
4. use 库名 切换到要使用的数据库
5. db 查看当前使用的数据库
6. show tables 查看当前数据库存放在磁盘上的数据表
7. use 新库名 创建数据库, 当前创建的数据库没有存放在磁盘中
8. db.tablename 新表名 创建数据表,没有存放在磁盘中
***注:
如果表中有数据,就自动保存在磁盘上
二.数据类型
1 ObjectId :Documents 自动生成的 _id
2 _id:ObjectId("5cb69a23815ea7295f8bad43") 自动生成的 json数据中不包含ObjectId类型 id类型uuid
3 String: 字符串,必须是utf-8
4 Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)
5 Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)
6 Double:浮点数 (没有float类型,所有小数都是Double)
7 Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)
8 Object:深度<=4 如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典
9 Null:空数据类型 , 一个特殊的概念,None Null
10 Timestamp:时间戳 通常不用这个数据类型 如果存储时间 Double
11 Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)
① objectID
"_id" : ObjectId("5b151f8536409809ab2e6b26") #"5b151f85" 代指的是时间戳,这条数据的产生时间 #"364098" 代指某台机器的机器码,存储这条数据时的机器编号 #"09ab" 代指进程ID,多进程存储数据的时候,非常有用的 #"2e6b26" 代指计数器,这里要注意的是,计数器的数字可能会出现重复,不是唯一的 #以上四种标识符拼凑成世界上唯一的ObjectID #只要是支持MongoDB的语言,都会有一个或多个方法,对ObjectID进行转换 #可以得到以上四种信息 #注意:这个类型是不可以被JSON序列化的
②插入时
③显示的数据
三.增删改查(简单版)
1.增
db.tablename.insert({"key":"value"}) 捎带手写入库和表磁盘 官方推荐写法: db.users.insertOne({}) db.users.insertMany([{},{},{}])
2.删
db.tablename.remove({}) 删除所有数据 db.tablename.remove({age:73}) 删除所有age==73的数据 官方推荐写法 db.users.deleteOne() 删除符合条件的第一条数据 db.users.deleteMany() 删除符合条件的所有数据
3.改
db.tablename.update({"name":"AlexDSB"},{"$set":{"age":84}}) 只修改符合条件的一条数据 $set - set修改器 强制替换覆盖 官方推荐写法 db.tablename.updateOne() 更新符合条件的第一条数据 db.tablename.updateMany() 更新符合条件的所有数据 array+Object : db.users.updateOne({"cours.name":"装X"},{$set:{"cours.$.score":"000"}})
# $:指选中的下标位置
4.查
db.tablename.find() 查询符合条件的所有数据 db.tablename.find({"name":"AlexDSB"}) db.tablename.findOne() 查询符合条件的第一条数据
四.数学比较符
1 $lt : 小于 √ 2 $lte: 小于等于 √ 3 $gt : 大于 √ 4 $gte: 大于等于 √ 5 $ne : 不等于 6 $eq or 冒号 : 等于
示例:
五. $ 的高级用法
1. $ 查询关键字
Array数据类型会自动遍历 1. $in 或者(相同字段查询) db.users.find({age:{$in:[19,109]}}) 2. $or 或者(不同字段查询) db.users.find({$or:[{age:19},{hobby:"篮球"}]}) 3. $and or 逗号 并列条件(两个或多个条件都要满足) 4. $all - Array数据类型 子集查询 db.users.find({hobby:{$all: ["罗玉凤"]}})
示例:
①array数据自动遍历列表
② $in
③ $or
④ $all
⑤
2. $ 修改器
1 $set - set修改器 强制替换覆盖
2 $unset - 强制删除字段
3 $inc - 引用增加
array操作:
4 $push (append) 在array中追加 db.users.update({name:"AlexDSB"},{$push:{hobby:"特斯垃圾"}})
5 $pushAll (extend) 在array中追加列表中的所有元素 db.users.update({name:"AlexDSB"},{$pushAll:{hobby:["22寸轮毂","V8","欧林斯"]}})
6 $pull (remove) 在array中删除一个元素 db.users.update({name:"AlexDSB"},{$pull: {hobby:"V8"}})
7 $pullAll 在array中删除一堆元素 db.users.update({name:"AlexDSB"},{$pullAll: {hobby:["小敏","芙蓉姐姐"]}})
8 $pop pop 删除第一个 -1 或 最后一个 1 的值 db.users.update({name:"AlexDSB"},{$pop: {hobby:1}})
示例:
①
②
3. $ 的特殊用法
存储符合条件的元素下标索引
用于修改字段
六.skip , sort , limit
1. sort 排序 db.users.find({}).sort({ age:1 }) db.users.find({}).sort({ age:1 , birthday:-1 }) 2. limit(1) 选取条目 db.users.find({}).limit(3000) 3. skip(1) 跳过 db.users.find({}).skip(1) 4. 先排序 再跳过 最后选取(不管写的是什么顺序) db.users.find({}).limit(3).skip(2).sort({ age:-1 }) 5. 分页: (page-1)*num db.users.find({}).limit(num).skip((page-1)*num)
七. pymongo基本操作
import json from pymongo import MongoClient from bson import ObjectId # 转换 id mc = MongoClient("127.0.0.1",27017) 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":84}}) # MONGODB.users.update_many({"name":"AlexDSB"},{"$set":{"age":84}}) # MONGODB.users.delete_one({"age":84}) # MONGODB.users.delete_many({"age":84}) # 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"] = 99 # # MONGODB.users.update_one({"name":"AlexDSB"},{"$set":res})
八. 偷换概念
MySql MongoDB DataBase == DataBase Table == Collection #表 Colunm == Field #字段 Row == Documents #数据