06.06 mongodb數據庫

7.條件查詢

db.集合名.find()

db.集合名.findOne(查詢條件) 單條查詢

db.集合名.find().pretty() 對查詢結果美化

比較運算

$lt 小於

$lte 小於等於

$gt 大於

$gte 大於等於

$ne 不等於

db.集合名.find({key:{$lt:n}})

邏輯運算

and:

db.集合名.find($and:[{key1:'value1'},{key2:'value2'}]) 可以直接 db.集合名.find({key1:'value1',key2:'value2'})

or:

db.集合名.find($or:[{key1:'value1'},{key2:'value2'}])

混合

db.colname.find({$or:[{key:value,key1:value1},key2:value2]})

mongodb數據庫

範圍運算

in:

db.集合名.find({key:{$in:[n1,n2,n3]}})

not in:

db.集合名.find({key:{$nin:[n1,n2,n3]}})

正則:只能用於字符串

db.集合名.find({key:/正則條件/})

db.集合名.find({key:{$regex:'正則條件'}})

自定義條件 js的函數func

db.集合名.find({$where:function(){return this.age == 18}})

'''

'''

8.find後的附加操作

db.集合名.find().skip(n) 略過的條數

db.集合名.find().limit(n) 限制返回條數

投影操作:限制返回的字段內容,格式 查詢所有,name為true返回name,_id默認返回,_id為false,就不返回,所以結果是隻展示所有的name

db.集合名.find({},{name:1,_id:0})

db.集合名.find().sort({age:1}) 以age排序 升序:1 降序:-1

db.集合名.find(條件).count() 統計

db.集合名.count(條件)

db.集合名.distinct(域名) 即字段名,以哪個字段來去重

'''

mongodb數據庫

'''

9.聚合運算 管道$

db.集合名.aggregate({$group:{_id:'$gender'}})

分組,以gender來分組,並且作為id

db.集合名.aggregate({$group:{_id:'$gender',counter:{$sum:1}}})

分組,以gender來分組,並且作為id,然後 數量(每個性別的人數,counter可以隨便起),$sum求和 : 1 (1的比例來求和,即有1條數據為1個)

其實形成了一張虛擬的表,有兩個字段 主鍵_id和counter

db.集合名.aggregate({$group:{_id:'$gender',counter:{$sum:1},sum_age:{$sum:'$age'},avg_age:{$avg:'$age'}}})

虛擬表:4個字段 以gender分組 主鍵_id ,每個組的人數counter,年齡總和sum_age,平均年齡avg_age

db.集合名.aggregate({$group:{_id:'$gender',name_list:{$push:'$name'}}})

虛擬表:2個字段 以gender分組,主鍵_id,name_list字段:把分組後的每個名字push到相對應的位置

db.集合名.aggregate({$match:{age:18}})

管道$match 同find就是查詢,但是可以有後續的附加

查詢年齡是18的

db.集合名.aggregate({$match:{name:{$regex:'黃'}}},{$project:{name:1}})

管道$project 就是投影操作:限制返回的內容

查找名字含有黃的,然後投影只返回name字段,_id字段是默認返回的

db.集合名.aggregate({$limit:5},{$skip:2})

$limit(限制) 和 $skip(略過) 和find的後續操作含義相同,但是注意先後順序對結果的影響

db.集合名.aggregate({$sort:{age:1}})

$sort排序 1:升序 -1:降序

mongodb數據庫

db.集合名.aggregate({$unwind:'$size'})

$unwind 拆分列表 拆分size size = ['M','S','L']

'''

'''

10.索引

查看索引

db.集合名.getIndexes()

創建索引

db.集合名.ensureIndex({key:1},{background:true})

以 key 來創建索引 1:升序 background在後臺來創建

刪除索引 db.集合名.dropIndex({key:1}) 以誰創建的就以誰刪除,並且順序也要帶上

以索引來查詢

db.集合名.find(查詢條件).hint(創建索引的條件{key:1 })

'''

'''

11.備份與恢復 在終端

備份

mongodump -h ip -d 備份數據庫名 -o 指定目錄

恢復

mongorestore -h ip -d 恢復數據庫名 --dir 從哪個文件夾恢復

mongodb數據庫

導入與導出 在終端

導出

mongoexport -h ip -d 導出的數據庫 -c 導出的表 -o filename.json (如果使用表格--type csv 指明字段的標題-f name,age,gender )

將指定的集合中的數據導出成文件

導入

mongoimport -d dbname -c colname filename

'''

'''

12.python交互

安裝 pip install pymongo

from pymongo import MongoClient

客戶端對象: 鏈接mongod

數據庫對象: use 數據庫

集合對象: 選擇了集合

遊標對象: 查找之後獲得的對象

客戶端對象

client = MongoClient(host=ip,port=port) 注意是host

client.database_names() 獲取數據庫列表

數據庫對象

db = client.數據庫名字 或者 client[數據庫名字]

db.collection_names() 獲取集合列表

db.create_collection(集合名) 創建集合

db.drop_collection(集合名) 刪除集合

db.name 查看所屬數據庫

db.authenticate(user,pwd) 權限認證

集合對象

col = db.集合名 或者 db[集合名]

col.name 查看所屬的集合名

插入

col.insert_one(data) 插入單條數據:字典

col.insert_many(data) 插入多條數據:字典列表

col.insert(data) 單,多都可

刪除

col.delete_one(條件) 刪除一條

col.delet_many(條件) 刪除多條

col.remove(query,multi) 根據條件刪除,multi決定數量

修改

col.update_one(query,update,upsert) 根據query查詢,更新成update,存在就修改不存在就插入

col.update_many(query,update,upsert) 修改多條

後記:對於大部分轉行的人來說,找機會把自己的基礎知識補齊,邊工作邊補基礎知識,真心很重要。

“我們相信人人都可以成為一個IT大神,現在開始,選擇一條陽光大道,助你入門,學習的路上不再迷茫。這裡是北京尚學堂,初學者轉行到IT行業的聚集地。"

遊標對象 只有查詢之後產生

col.find(條件) 返回遊標對象,可遍歷 <pymongo.cursor.cursor> /<pymongo.cursor.cursor>

col.find_one(條件) 返回一條數據


分享到:


相關文章: