mongodb数据结构
mogodb其实就是
[ // 表 collections
{ // 行 documents
"id":1, // 字段 field
"name":"Jack",
"age":18,
"hobby":["洗脚","打游戏","吃包子"]
},
{
"id":2,
"name":"Jack",
"age":18,
"hobby":["洗脚","打游戏","吃包子"]
}
]
- 可视化工具
https://nosqlbooster.com/downloads
数据类型
- ObjectId:Doucments 自动成的_Id
- 2.String: 字符串 必须是UTF-8
- Boolean: 布尔值 true false
- Integer: 整型 (Int32 或者 Int64)一般我们使用Int 就可以了
- Double:浮点类型 (没有float类型,所有的小数都是Double)
- Array:数组或者列表 多个存储到一个键(Python中的list)
- Object:字典类型 尽量不要超过四层
- Null:空数据类型,python中的None
- TimeStamp:时间戳 一般我们使用时间戳
- Date:存储当前日期或者时间unix时间格式
mongdb 数据库操作
- 增加
db.user.insert({"id":2,"name":"Jack","age":18})
- 查询数据
db.user.find()
# { "_id" : ObjectId("5d728bdfcbdae9451de9771f"), "id" : 2, "name" : "Jack", "age" : 18 }
db.user.find({}).skip(5) # 跳过5条
db.user.find({}).limit(5) # 显示5条
db.user.find({}).sort({"age":1}) # -1倒序 1正序
# 默认顺序
# sort排序 -> skip跳过 —> limit筛选
Python操作 mongodb
- 安装模块
pip install pymongo
+简单实用
import pymongo
mongoClient = pymongo.MongoClient(host="127.0.0.1", port=27017) # 创建链接
mongoDB = mongoClient["local"] # 选择local数据库
from bson.objectid import ObjectId # 字符串 转换 ObjectId
# find
# res = mongoDB.user.find({})
# # print(res) #
# for i in res:
# print(i.get("_id"), type(i.get("_id"))) # 5d728b98cbdae9451de9771e
# find_one
# res = mongoDB.users.find_one({},{"_id": 0, "age": 0}) # 筛选 结果不要_id age 字段
# print(res)
'''
增加
'''
# res = mongoDB.user.insert_one({"name": "Anny", "age": 23})
# print(res, type(res), res.inserted_id)
#
# res = mongoDB.user.insert_many([{"name": "Anny", "age": 23}, {"name": "Anny", "age": 23}])
# print(res, type(res), res.inserted_ids)
'''
修改
'''
# 只修改 第一条
res = mongoDB.user.update_one({"age": 23}, {"$set": {"name": "Jack"}})
print(res, dir(res))
# 修改全部
# mongoDB.user.update_many({},{"$set":{}})
# '''
# 删除
# '''
# # 删除第一条
# mongoDB.user.delete_one({"name": "Jack"})
# # 删除全部
# mongoDB.user.delete_many({"name": "Jack"})
#
#
# '''
# 特殊的 用法
# '''
# mongoDB.user.find({}).limit(5).skip(5)
#
# mongoDB.user.find({}).sort("age", pymongo.DESCENDING) # 倒序
# mongoDB.user.find({}).sort("age", pymongo.ASCENDING) # 正序
#
res = mongoDB.user.find_one({"_id": ObjectId("5d728b98cbdae9451de9771e")})
print(res)
- mongodb 中 update更新字段里面的修改器
$set 暴力修改
$unset 强制删除字段
$inc +1 +-1 引用增加
array修改器
$push 相当于append 追加数据 updateOne({},{$push:{list:1}}) 向列表中追加一个元素
$pull list中的remove 删除某元素 updateOne({},{$pull:{list:1}}) 删除列表张的一个元素
$pushAll list中的extends 迭代追加最后追加数据 updateOne({},{$pushAll:{list}}) 想列表中追加对个元素
$pop list中的pop 删除列表中的第一个或者左后一个元素 updateOne({},{$pop:{list:1}}) 或者-1->表示第一个
$ - 符合条件的下标 - 一定在 array中
[3,4,5,2,1] $=4
updateOne({list:1}, {$set:{"list.$":6}}) 在列表中找到 1 对应的下标 也就是4 此时$临时存储下标 4 将下标为4的值修改为6
- mongodb find 字段查找
find()
findOne()
# 并列条件查找 相当于 AND
find({"name":"Jack", "age":2})
# 或 条件 相当于 OR
find(
{
$or:[{"name":1},{"age":18,"gender":"女"}] # 查询 年龄等于18并且性别是女 或者 名为为1的数据
}
)
# 子集 $in
findOne({"hobby":{$in:[1,2,3,4,5]}}) 查询爱好符合 1或者2或3或4或5的数据
# 完全符合 $all
findOne({"hooby":{$all:[1,2,3,4,5]}}) 爱好必须是1,2,3,4,5 的的数据