MongoDB
一、查看语句
show dbs 查看当前服务器存在多少DB
use ss1db CreateDatabase 使用不存在的对象即创建该对象 没有即创建
show tables 查看当前DB中有多少表(Collection)
二、增删改查基本操作
mongodb的数据存储结构 : user = [{ name:dragon, age:20, gender:"man" },] mongodb的增删改查 增: insert x 官方已经不推荐使用这个LowB的方法了 insertOne({name:"123"}) 插入一条数据行(document) insertMany([{name:"123"},{name:"234"},{name:"345"}]) 插入多行数据 查: 查的时候没有findMany findOne({name:"123"}) 查询满足条件的第一条数据 find({name:"123"}) 查询所有满足条件的数据 改: update x 官方已经不推荐使用这个LowB的方法了 updateOne({name:"123"},{$set:{gender:"man",age:20}}) 修改满足条件的第一条数据 updateMany({name:"123"},{$set:{gender:"man",age:20}}) 修改所有满足条件的数据 $set: 修改器,将某个Key的值修改为某个值 删: deleteOne({name:"123"}) 删除满足条件的第一条数据 deleteMany({name:"123"}) 删除所有满足条件的数据 remove({})清空数据
三、数据类型
mongodb中的数据类型: ObjectID :Documents 自生成的 _id String: 字符串,必须是utf-8 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:时间戳 ISODate:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)
这是MongoDB生成的类似关系型DB表主键的唯一key,具体由24个字节组成:
0-8字节是时间戳,
9-14字节的机器标识符,表示MongoDB实例所在机器的不同;
15-18字节的进程id,表示相同机器的不同MongoDB进程。
19-24字节是计数器
四、关键字:数学比较符
$关键字:数学比较符 db.student.find({age:{$lt:25}}) db.student.find({age:{$lte:25}}) db.student.find({age:{$gt:23}}) db.student.find({age:{$gte:23}})
五、修改器
$修改器: 1.$set: 将某个Key的值修改为某个值 2.$unset: 删除字段(field) db.student.updateOne({age:84},{$unset:{head:1}}) 3.$inc : 将原有值增加多少 db.student.updateOne({age:85},{$inc:{age:1000}}) 4.$push: [].append() 在arrays中在最后位置追加一个数据 db.student.updateOne({age:1085},{$push:{hobby:"chezhen"}}) 5.$pull: [].remove(item) 在array中删除一个元素 db.student.updateOne({age:1085},{$pull:{hobby:"chezhen"}}) 6.$pop : 删除array中的第一个或最后一个元素,-1:第一个 1:最后一个
六、字符的特殊用法
$字符的特殊用法: db.student.updateMany({hobby:69},{$set:{"hobby.$":78}}) 符合array检索条件的元素下标 遇到array中包含object时使用以下方式 db.school.updateOne({"price.price":17800},{$set:{"price.$.name":"linux"}}) db.school.updateOne({"price.name":"linux"},{$set:{"price.1.name":"linux云计算"}})
七、其他操作
limit(2) : 选取,从0-2的数据 skip(2) : 跳过 2 条数据 从第3条数据开始 sort({age:1}) : 根据age字段进行从小到大的排序(升序) -1:降序 分页查询: limit(count).skip(page+count)
八、Python使用mongoDB
pymongo: 连接字符串: mongo_conn = pymongo.MongoClient(host="127.0.0.1",port=27017) 建立连接 mongo_db = mongo_conn["ss1db"] 选取数据 查询: res = mongo_db.student.find({"name":"alex"}) pymongo的Cursor对象需要循环 for i in res: print(i) res = mongo_db.student.find_one({"age":25}) 返回的是一个Dict print(res) 增加: res = mongo_db.student.insert_one({"name":"nezha","age":20}) print(res) inserOneResult print(res.inserted_id) # 当前插入对象的_id res = mongo_db.student.insert_many([{"name":"nezha1","age":20},{"name":"nezha2","age":20}]) print(res) inserManyResult print(res.inserted_ids) # 当前插入所有对象的_id 是个list 更新: res = mongo_db.student.update_one({"name":"nezha1"},{"$set":{"age":22}}) print(res) UpdateResult print(res.acknowledged) # True 更新成功 res = mongo_db.student.update_many({"age":30},{"$set":{"age":25}}) print(res) UpdateResult print(res.raw_result) # 受影响行数 print(res.acknowledged) # True 更新成功 删除: res = mongo_db.student.delete_one({"name":"nezha1"}) print(res) DeleteResult print(res.acknowledged) # True 删除成功 print(res.deleted_count) # 删除行数 只能是1 print(res.raw_result) 受影响行数 res = mongo_db.student.delete_many({"age":25}) print(res) DeleteResult print(res.acknowledged) # True 删除成功 print(res.deleted_count) # 删除行数 可以大于1 print(res.raw_result) 受影响行数 清楚数据: res = mongo_db.student.remove({}) print(res) # 受影响行数 返回值 n > 0 清楚成功 # 查询_id等于 5b7e0a6eaeb4a3336c0f9b71 # from bson import ObjectId #必须使用ObjectId去查询_id # res = mongo_db.school.find_one({"_id":ObjectId("5b7e0a6eaeb4a3336c0f9b71")}) # print(res) limit skip sort: sort的用法,与pymysql中的用法及其相似,已经不是mongodb中的sort用法 res = mongo_db.school.find({}).limit(2).skip(1).sort("name",pymongo.ASCENDING) for i in res: print(i)