二、數據庫:mongodb數據庫

一、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、實例

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章