<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      詳細說明MongoDB常用的設置

      [摘要]MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。在高負載的情況下,添加更多的節點,可以保證服務器性能。MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。一、增刪改查查看當前數據庫中所有的集合,使用命令 show collections 或使用sho...
      MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。在高負載的情況下,添加更多的節點,可以保證服務器性能。MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。

      一、增刪改查

      查看當前數據庫中所有的集合,使用命令

      show collections 或使用
      show tables

      創建集合有兩種方式,顯示創建和隱式創建


      顯示創建可以使用命令 db.createCollection(“集合名稱")
      隱式創建可以使用命令 db.集合名稱.insert({}),
      指創建集合并同時向集合中插入數據,
      例如:db.customer.insert({name:”jack”})

      向集合添加文檔

      使用命令 db.集合名稱.insert({}),例如:

      db.user1.insert({name:”jack”,age:20})

      刪除集合中的文檔


      使用命令 db.集合名稱.remove({刪除條件}),
      不加刪除條件為刪除集合中的所有文檔:
      例如,刪除c1集合中的所有文檔 db.c1.remove() 
      刪除c1集合中name為user1的文檔 db.c1.remove({name:”user1”})

      查詢集合中的文檔


      db.集合名稱.find({條件})
      或者使用 
      db.集合名稱.findOne() 查詢第一個文檔

      查詢集合中的文檔,返回某些特定的鍵值
      除了查詢表達式以外,MongoDB還支持一些額外的參數選項。
      如果僅僅只想返回某些特定的字段值:
      返回除了age字段外的所有字段
      db.user.find({},{age:0});

      返回tags=tennis除了comments的所有列
      db.posts.find({tags:'tennis'},{comments:0});

      返回userid=16的name字段
      db.user.find({userid:16},{name:1});
      {"_id":16,"name":"user16"}

      返回x=john的所有z字段
      db.things.find({x:"john"},{z:1});

      查詢集合中的文檔 ,使用條件表達式(<, <=, >, >=,!=)
      //大于: field > value
      db.collection.find({field:{$gt:value}});

      //小于: field < value
      db.collection.find({field:{$lt:value}});

      //大于等于: field >= value
      db.collection.find({field:{$gte:value}});

      //小于等于: field <= value
      db.collection.find({field:{$lte:value}});

      //不等于: field != value
      db.collection.find({field:{$ne:value}});

      查詢集合中的文檔 ,統計(count)、排序(sort)、分頁(skip、limit)


      db.customer.count();
      db.customer.find().count();
      db.customer.find({age:{$lt:5}}).count();
      db.customer.find().sort({age:1}); 降序-1
      db.customer.find().skip(2).limit(3);
      db.customer.find().sort({age:-1}).skip(2).limit(3);
      db.customer.find().sort({age:-1}).skip(2).limit(3).count();
      db.customer.find().sort({age:-1}).skip(2).limit(3).count(0);
      db.customer.find().sort({age:-1}).skip(2).limit(3).count(1);

      查詢集合中的文檔
      $all主要用來查詢數組中的包含關系,
      查詢條件中只要有一個不包含就不返回

      $in,類似于關系型數據庫中的IN

      $nin,與$in相反

      $or,相當于關系型數據庫中的OR,表示或者的關系,
      例如查詢name為user2或者age為3的文檔,命令為:
      db.customer.find({$or:[{name:”user2”},{age:3}]})

      $nor,表示根據條件過濾掉某些數據,例如查詢name不是user2,age不是3的文檔,命令為:
      db.customer.find({$nor:[{name:”user2”},{age:3}]})

      $exists,用于查詢集合中存在某個鍵的文檔或不存在某個鍵的文檔,例如查詢customer集合中存在name鍵的所有文檔,可以使用
      db.customer.find({name:{$exists:1}})
      $exists:1表示真,指存在
      $exists:0表示假,指不存在

      游標

      更新集合中的文檔
      語法:db.collection.update(criteria,objNew,upsert,multi)
      參數說明:
      criteria:用于設置查詢條件的對象
      objNew:用于設置更新內容的對象
      upsert:如果記錄已經存在,更新它,否則新增一個記錄,取值為0或1
      multi:如果有多個符合條件的記錄,是否全部更新,取值為0或1

      注意:默認情況下,只會更新第一個符合條件的記錄
      一般情況下后兩個參數分別為0,1 ,即:
      db.collection.update(criteria,objNew,0,1)

      將集合中name為user1的文檔改成name為jack:
      db.c1.update({name:"user1"},{name:"jack"})

      $set 用來指定一個鍵的值,如果這個鍵不存在,則創建它。例如:
      給name為user1的文檔添加address,可以使用命令:
      db.c1.update({name:”user1”},{$set:{address:”bj”}},0,1)
      將name為user1的文檔修改address為tj,其它鍵值對不變,命令為:
      db.c1.update({name:”user1”},{$set:{address:”tj”}},0,1)

      使用 $inc 將集合中name為user1的age加1,其它鍵不變,
      $inc表示使某個鍵值加減指定的數值
      db.c1.update({name:"user1"},{$inc:{age:1}})

      $unset 用來刪除某個鍵
      例如刪除name為user1的文檔中的address鍵,可以使用命令:
      db.c1.update({name:”user1”},{$unset:{address:1}},0,1)

      二、索引:

      索引就是用來加速查詢的。數據庫索引與書籍的索引類似:有了索引就不需要翻遍整本書,數據庫則可以直接在索引中查找,使得查找速度能提高幾個數量級。在索引中找到條目以后,就可以直接跳轉到目標文檔的位置。

      普通索引:
      創建:db.collection.ensureIndex({key:1})
      查看關于索引的相關信息:db.collection.stats()
      查看查詢使用索引的情況:db.collection.find({key:value}).explain()
      刪除索引:db.collection.dropIndex({key:1})
      刪除集合,也會將集合中的索引全部刪除

      唯一索引:
      創建:db.collection.ensureIndex({key:1},{unique:true})
      查看關于索引的相關信息:db.collection.stats()
      查看查詢使用索引的情況:db.collection.find({key:value}).explain()
      刪除索引:db.collection.dropIndex({key:1})
      刪除集合,也會將集合中的索引全部刪除

      三、固定集合(capped collection)

      固定集合指的是事先創建而且大小固定的集合 。

      固定集合特性:固定集合很像環形隊列,如果空間不足,最早的文檔就會被刪除,為新的文檔騰出空間。一般來說,固定集合適用于任何想要自動淘汰過期屬性的場景,沒有太多的操作限制。

      創建固定集合:
      db.createCollection(“collectionName”,{capped:true,size:100000,max:100});
      size指定集合大小,單位為KB,max指定文檔的數量

      當指定文檔數量上限時,必須同時指定大小。淘汰機制只有在容量還沒有滿時才會依據文檔數量來工作。要是容量滿了,淘汰機制會依據容量來工作。

      四、備份(mongodump)和恢復(mongorestore)

      MongoDB提供了備份和恢復的功能,分別是MongoDB下載目錄下的mongodump.exe和mongorestore.exe文件(即在mongodb bin目錄下的命令)

      備份數據使用下面的命令:
      mongodump -h dbhost -d dbname -o dbdirectory
      -h:MongDB所在服務器地址,例如:127.0.0.1,當然也可以指定端口號:127.0.0.1:27017
      -d:需要備份的數據庫實例,例如:test
      -o:備份的數據存放位置,例如:c:\data\dump,當然該目錄需要提
      前建立,在備份完成后,系統自動在dump目錄下建立一個test目錄,這個
      目錄里面存放該數據庫實例的備份數據。

      恢復數據使用下面的命令:
      mongorestore -h dbhost -d dbname -directoryperdb dbdirectory
      -h:MongoDB所在服務器地址
      -d:需要恢復的數據庫實例,例如:test,當然這個名稱也可以和備份時候的不一樣,比如test2
      -directoryperdb:備份數據所在位置,例如:c:\data\dump\test

      五、導入(mongoimport)和導出(mongoexport)

      導出數據可以使用命令:
      mongoexport -h dbhost -d dbname -c collectionName -o output
      參數說明:
      -h 數據庫地址
      -d 指明使用的庫
      -c 指明要導出的集合
      -o 指明要導出的文件名

      例:
      mongoexport -h localhost:27017 -d test -c c4 -o d:/beifeng/c4.txt

      導入數據可以使用命令:
      mongoimport -h dbhost -d dbname -c collectionname 文件的地址...
      參數說明:
      -h 數據庫地址
      -d 指明使用的庫
      -c 指明要導入的集合
      本地的文件地址...

      例:
      mongoimport -h localhost:27017 -d test -c cctv d:/beifeng/c4.txt

      以上就是詳細介紹MongoDB常用的操作的詳細內容,更多請關注php中文網其它相關文章!


      學習教程快速掌握從入門到精通的SQL知識。




      日韩精品一区二区三区高清