一、MongoDb
1、Mongodb是由C++語言編寫的,是一個基於分佈式文件存儲的開源數據庫系統
2、旨在爲 web 應用提供可拓展的高性能數據存儲解決方案
3、mongodb將數據存儲爲一個文檔,數據結構由鍵值對組成,mongodb 文檔類似於 json 對象,字段值可以包含其他文檔、數組及文檔數組
二、MongoDb數據庫相關操作
1、連接數據庫: mongo IP地址:端口號(默認端口號爲27017)/ 數據庫名(默認使用test庫)
2、查詢當前正在使用的數據庫: db.getName( ) 或 db
3、查看全部數據庫: show dbs 或 show databases
4、選擇使用數據庫: use 數據庫 ( 若數據庫不存在,則新建數據庫,如果並沒有對該數據庫進行任何操作,則不會創建成功 )
5、刪除數據庫: ① 選擇想要刪除的數據庫: use 數據庫 ② 刪除該數據庫: db.dropDatabase( )
6、查看數據庫狀態: db.stats( )
7、使用數據庫使用手冊: db.help( )
三、MongoDb集合相關操作
1、查看當前數據庫中的所有集合( 先選擇數據庫,指令結尾可以加上分號): show tables 或 show collections
2、集合的命名
①不能是空字符串 (" ")
②不能包含空字符 ( \0 )
③不能使用 system. 的前綴( 系統保留 )
④不建議使用保留字( "$" )
⑤用 . 分隔不同命名空間的子集合( 如:bolg.users,blog.posts )
3、創建集合: db.createCollection( "集合名" )
4、刪除集合: db.集合名.drop( ) 刪除成功後,返回 true ; 刪除一個不存在的集合,返回 false
5、創建集合並插入數據
插入記錄成功之後,mongodb 會默認爲每一個文檔都添加一個 _id 字段,並且同一個集合中的 _id 是唯一的
四、寫數據
1、普通數據的添加(json、bson、類json)
①一次寫入一條數據: db.集合.insert( {"鍵":"值"} ) 或者 db.集合.save( {"鍵":"值"} )
②一次寫入多條數據: db.集合.insert ( [ {"鍵":"值"} , {"鍵":"值"} , {"鍵":"值"} ] )
2、多維數據對象的添加 : db.集合.insert( {"鍵":"值","鍵":{"鍵":"值" } } )
3、數組信息的添加: db.集合.insert( {"鍵":"值","鍵":{"鍵":"值" } ,"鍵":[ '值1','值2','值3' ] } )
4、數據的另一種寫入形式:
五、查數據
1、籠統查詢:
①查詢集合的全部數據信息: db.集合.find( )
②查詢集合的第一條數據信息: db.集合.findOne( )
③使用 pretty方法,以格式化的形式輸出數據信息,使查詢到的數據看起來更加直觀、清晰
db.集合.find( ).pretty( )
2、條件限制查詢:
①查詢集合中滿足條件的全部數據信息: db.集合.find( { 條件 } )
查詢goods集合中,所有滿足年齡爲22的人的信息
②查詢集合中滿足條件的第一條數據信息: db.集合.findOne( { 條件 } )
3、條件範圍查詢: ⑴ $gt 大於 ⑵ $gte 大於等於 ⑶ $lt 小於 ⑷ $lte 小於等於
db.集合.find( { '鍵':{ ' $gt ' :' 值 ' } } ) 查詢集合中某個鍵的值大於某一個值的全部信息
4、多條件查詢: db.集合.find( { 條件1 , 條件2 , 條件3 } )
查詢年齡大於20,且姓名爲 wang 的數據信息
5、多維字段查詢:當集合中含有多維數據信息的時候(即字典嵌套字典),可以使用多維字段查詢
①多維字段的條件查詢: db.集合.find( { "key.name":條件 } )
②多維字段的範圍查詢: db.集合.find( { "key.name":{ ' 範圍 ':' 值 ' } } )
③多維字段的多條件查詢:
6、數組條件限制查詢:
① db.集合.find( { 數組的字段名:[ ' 值1',' 值2 ' ] } )
注意注意的是:只要該字段中包含查詢的這個值,那麼就可以查詢出來,當查詢這個字段的多個值時,只有當它們的順序一致且存在時,纔會查詢出來,否則就會像第三次查詢那樣,無法查詢出來
② db.集合.find( { 數組的字段名:{ ' $all ':[ ' 值1',' 值2 ' ] } } )
當配合 $all 使用時,多個值的順序就不必與存儲順序一致了,只需存在就可以查詢出來
7、限制查詢字段:只查詢指定的字段信息: db.集合.find.( { 條件 },{ 字段:1/ 0,字段:1/ 0 } )
find 方法的第一個參數 ( 即條件 ) 必須有,若沒有條件的話,就爲空字典, 1表示查詢此字段, 0表示排除此字段
當想要顯示多個字段時:這些字段要麼全部輸出 ( 全爲1 ),要麼全部不輸出( 全爲0 ), _id 字段除外,它可以任意設置 0 或 1
當不限制是否顯示 _id 字段時,該字段會默認顯示出來
8、$or 、 $in 、 $nin 、 $all 的使用
① $or,多條件查詢,滿足其中任意一個條件即可 db.集合.find( { ' $or ':[ { 條件1 },{ 條件2 } ] } )
如圖,條件爲:性別爲男,或者年齡不小於22,只要滿足至少一個條件,就會查詢到
② $in / $nin : 在數組中 / 不再數組中
db.集合.find( { ' 字段 ': { ' $in ':[ ' 值1 ',' 值2 ',' 值3 ' ] } } ) 若該字段中存在這個值,就會查詢出來
db.集合.find( { ' 字段 ': { ' $nin ':[ ' 值1 ',' 值2 ',' 值3 ' ] } } ) 若該字段中不存在這個值,就會查詢出來
③ $all ,完全匹配,查詢的字段的數組信息與其要求的相同( 沒有順序要求,且數組中可以存在要求匹配的以外的其他數據 )
如圖,要求 interest 字段的數組完全匹配 eat 和 sleep ( 沒有順序要求 ),只要該數組中存在這兩個數據即可,對其餘的數據,如 run,則沒有要求
9、自定義條件查詢 $where:通過函數自定義條件[JS函數],在指定的函數中,返回boolean類型的值,this表示每個要查詢的文檔
db.集合.find( { $where:函數名( ) { return this.字段 條件 } } )
10、限制查詢數據條數:
如下:goods集合共有10條數據
① db.集合.find( ).limit(3) 限制查詢數據的條數爲 3(即只可以查詢到滿足要求的前三跳數據)
②db.集合.find( ).skip( 2 ) 跳過查詢到的前2條數據(跳過查詢到的前兩條)
③ limit( ) 和 skip( )結合使用: db.集合.find( ).limit(3).skip( 2) 跳過查詢到的前兩條數據,且只顯示之後的三條數據
由此,實現分頁顯示: 規定,每頁顯示兩條數據,即 limit(2),那麼 skip 的參數爲 2( n-1 )
11、數據查詢——排序、統計、去重
① 排序查詢: db.集合.find( ).sort ( { ' 字段 ':1 / -1 } ) 按該字段進行升序 / 降序查詢 , 1表示升序,-1表示降序
② 統計查詢: db.集合.find( ).count( ) 統計符合查詢要求的數據的數量
③去重查詢: db.集合.distinct( "去重字段",{ 條件 } )
六、更新數據
1、修改數據
① db.集合.update( { 條件 },{ ' $set ' :{ " 字段 ":" 值 ", " 字段 ":" 值 " ......} } )
使用 $set 修改數據時,只會修改數據指定的字段,其餘字段不會被改變,也不會被刪除,且每次只會修改一個數據
② db.集合.update( { 條件 },{ " 字段 ":" 值 ", " 字段 ":" 值 " ......} )
使用這種方法修改數據時,只修改指定字段信息,其餘字段將會被刪除
2、刪除數據
db.集合.remove( { 條件 },true / false ) ,第二個參數表示:是否刪除一條數據,默認爲 false,即默認刪除多條數據
3、刪除字段: db.集合.update( { 條件 },{ " $unset ":{ 字段:1,字段:1 } } ) (字段:1 或 字段:0 都可以刪除該字段)
db.集合.remove( { } ) 清空所以數據
4、修改數據的其他方法:
db.集合.update( { 條件 },{ " 修改器 ":{ 字段:值 } } ,false / true,false / true )
第一個參數: 條件,即將滿足條件的字段值進行修改
第二個參數:修改器及修改字段, 修改器 $set:修改字段信息, 修改器 $inc:增加值
第三個參數:默認 false,即當修改數據時,若沒有該字段,則不進行任何操作, true 表示增加這個不存在的字段與值
第四個參數:默認 false,即當有多條數據滿足要求時,只修改一條, true 表示全部修改
如圖:修改 age 爲 20 的數據,將 age 修改爲 30,並且添加新字段 sex,且滿足條件的全部修改
修改 age 爲 30 的數據,將 age 的值加5,且只修改一條數據
七、python 與 mongodb 交互
1、pymongo 是操作 mongodb 的 python 模塊
安裝:python3 -m pip install pymongo linux:sudo python3 -m pip install pymongo
2、實例