MongoDB:文件型數據庫 find() update() delete() insert()持久化javascript
redis:get set 默認持久化java
1.MongoDB是什麼及其概念:python
#MongoDB是一個快速存儲數據(JSON),並ORM操做的數據庫 #MongoDB是文件型數據庫,不存在關係 #MongoDB中基本上存儲了大量的冗餘數據 #MongoDB中沒有字段的概念 #MongoDB是很是靈活的數據庫 #專有名詞: #Mysql MongoDB #DB DB #Table Colletions Table概念 #row Documents row概念 #字段 Field 字段概念 #_id 惟一律念 #不存在即建立: #若是使用了不存在的對象即建立該對象
2.MongoDB的存儲結構:程序員
關係型數據庫: #id name age course score score1 #1 子龍 84 python 99 0 #2 xiaoqinglong 73 javascript 0 99 文件型數據庫: [ { _id:ObjectId("1298478375f8234d") ids:1, names:子龍, ages:84, courses:python, scores:99 }, { id:2, name:xiaoqinglong, age:73, course:javascript, score1:99 } ]
3.初識MongoDBredis
#1.安裝mongoDB bin目錄環境變量 #2.啓動mongoDB: #mongod (手動建立文件夾) c:\data\db #mongod --dbpath "E:\Program Files\MongoDB\data\db" #3.MongoDB的默認端口號:27017 (redis:6379 MySql:3306)
4.mongodb 的指令:sql
#show dbs 查看當前數據庫服務器中的全部數據庫(DB) #use dbname 建立或使用數據庫 #db 查看當前使用的數據庫 / 代指當前使用的數據庫的名字或對象 #show tables 查看當前數據庫的 數據表 Collations
5.MongoDB的增刪改查:mongodb
#增: #db.Collations.insert({"name":"zilong"}) #db.Collations.insert([{"name":"zilong"},{"name":"123"}]) #// insert 方式 被官方不推薦了 #1.db.Collations.insertOne({}) 只能單行操做插入 #2.db.Collations.insertMany([{},{}]) 根據array(列表)中的元素插入多行數據
#改: #db.user.update({"name":"酸菜"},{$set:{"name":"老壇酸菜"}}) #db.user.update({"name":"酸菜"},{$set:{"name":"老壇酸菜"}},多條修改:true) #// update 方式 被官方不推薦了 #db.user.updateOne({"name":"子龍"},{$set:{"name":"趙子龍"}}) #db.user.updateMany({"name":"小青龍"},{$set:{"name":"白虎"}})
#刪除: #db.user.remove({}) #// remove 方式 被官方不推薦了 #db.user.deleteOne({"name":"白虎"}) #db.user.deleteMany({"name":"翠花兒"})
#查: #1.db.find({條件:1}) #2.db.findOne({條件:1}) #db.user.findOne({"name":"酸菜","age":1}) 逗號至關於 and #3.數學比較符: #$lt 小於 #$gt 大於 #$lte 小於等於 #$gte 大於等於 #find({"字段":{$比較符:值}}) #db.user.find({"age":{$gt:2}}) # where age > 2
6.修改器:數據庫
#$set : 將某個key的value 修改成 某值 #$unset: 刪除字段 {$unset: {test: "" }} #$inc:{$inc:{"age":100}} 原有值基礎上增長 xxx #array: #$push : 向數組Array最後位置插入一條元素 {$push:{"hobby":1234}} [].append(1234) #$pull : 刪除數組中的某一個元素 {$pull:{"hobby":123}} #刪除字典 #db.user.updateOne({"_id":ObjectId("5b98794ec34b9812bcabdde7"),"hobby.age":18},{$unset:{"hobby.$":1}}) #$pop : 刪除數組的第一個或最後一個 #最後一個:{$pop:{"hobby":1}} #第一個:{$pop:{"hobby":-1}} #$ :代指符合條件的某數據 array.$ : #db.user.updateOne({"_id":ObjectId("5b98794ec34b9812bcabdde7"),"hobby.name":"翠花兒"},{$set:{"hobby.$.name":"農婦山泉"}}) #查詢$關鍵字: #$in: db.user.find({age:{$in:[1,2,3]}}) 字段符合in,array中的數值 #$or: db.user.find({$or:[{age:{$in:[1,2,3,4]}},{name:666}]}) #$all: db.user.find({test:{$all:[1,2]}}) array元素相同便可 或 包含全部$all中的元素
7.數據類型:數組
#基於BSON結構 #string 字符串,Utf8 #integer 整型 #double 雙精度,包含float,MongoDB中不存在Float #Null 空數據類型 #Date 時間類型 ISODate(2018-9-12 10:45:58) #Timestamp 時間戳類型 ISODate("123123") #ObjectId 對象ID Documents 自生成的 _id #ObjectId("5b98794ec34b9812bcabdde7") #"5b151f85" 代指的是時間戳,這條數據的產生時間 #"364098" 代指某臺機器的機器碼,存儲這條數據時的機器編號 #"09ab" 代指進程ID,多進程存儲數據的時候,很是有用的 #"2e6b26" 代指計數器,這裏要注意的是,計數器的數字可能會出現重複,不是惟一的 #以上四種標識符拼湊成世界上惟一的ObjectID #只要是支持MongoDB的語言,都會有一個或多個方法,對ObjectID進行轉換 #能夠獲得以上四種信息 #不可以被 JSON 化 #from BSON import ObjectId #?arrays [] 數組類型 至關於python中的list $pop $push $pull #?object {name:1} 對象類型 至關於python中的dict #ps:因爲MongoDB存儲自由度沒有限制,因此咱們程序員要定義好數據格式,儘量少的修改格式(開發階段隨便修改)
8. 排序 跳過 顯示條目服務器
#sort 排序 find().sort(id:-1/1) 1 升序 2 降序 desc #skip 跳過 find().skip(2) 從三條開始返回 #limit 顯示條目 find().limit(2)只顯示前兩條 #混搭: #db.user.find({}).sort({age:-1 }).skip(1).limit(2) #根據age字段進行降序排列,而且跳過第一條,從第二條開始返回,兩條數據
9.pymongo:
#sort("age",pymongo.DESCENDING)