Mongo簡單使用指南

一.Mongo的鏈接與斷開

1.1 Mongo的鏈接mongodb

Mongo的鏈接可使用代碼鏈接,也可使用shell鏈接.shell

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]
  • mongodb:// 這是固定的格式,必需要指定。
  • username:password@ 可選項,若是設置,在鏈接數據庫服務器以後,驅動都會嘗試登錄這個數據庫
  • host1 必須的指定至少一個host, host1 是這個URI惟一要填寫的。它指定了要鏈接服務器的地址。若是要鏈接複製集,請指定多個主機地址。
  • portX 可選的指定端口,若是不填,默認爲27017
  • /database 若是指定username:password@,鏈接並驗證登錄指定數據庫。若不指定,默認打開 test 數據庫。
  • ?options 是鏈接選項。若是不使用/database,則前面須要加上/。全部鏈接選項都是鍵值對name=value,鍵值對之間經過&或;(分號)隔開

shell鏈接時,默認使用mongo url便可鏈接.數據庫

1.2 Mongo的斷開服務器

Mongo的斷開,若是使用shell,直接退出,便可斷開.url

二.Mongo的增刪改查

2.1 database,collection的建立與刪除rest

  • 建立databasecode

    在shell下,經過show dbs能夠查看全部的數據庫,使用user xxx就能切換到數據庫,若是數據庫不存在就會建立.排序

  • 刪除database索引

    在當前數據庫下,使用db.Dropdatabase()來刪除當前數據庫.接口

  • 建立collection

    插入數據只能往collection中插入,若是數據庫中沒有對應的collection,插入數據時會自動建立.也可使用db.xxx.createCollection()來建立指定名字的collection.

  • 刪除collection

    在數據庫下,使用db.xxx.drop()便可刪除指定的collection. xxx便是collection的名字.

2.2 數據的增刪改查

  • 數據的添加

    使用db.xxx.insert({"name":"yhp"})就能夠在指定的xxx collection中插入一條記錄.

  • 數據的刪除

    collection中的數據能夠經過使用db.xxx.deleteOne({條件})來刪除符合條件的一個,或者使用db.xxx.deleteMany({條件})來刪除多個符合條件的數據;老的接口也可使用db.xxx.remove({條件})來刪除數據.若是條件爲空,那麼就是刪除collection下的全部數據.

  • 數據的查詢

    1. 查看全部數據

      使用db.xxx.find(),便可查看全部數據.

    2. 條件查找

      • 使用db.xxx.find({"age":{$gt:30}})來查找age大於30的結果,也可使用$lt,$lte等條件.若是查找在某個區間的,則使用db.find({"age":{$gt:30, $lt:35}}),則是找出大於30小於35的結果.
      • 使用db.xxx.find({條件},{"name":1})能夠查詢符合條件的結果中的指定name列.默認包含_id,若是不指望有id列,可使用_id:0來去掉.
      • 使用db.xxx.find({條件}).sort({"name":-1}),能夠按照name倒序排序結果,若是爲1,那麼就爲正序排序.
      • 使用db.xxx.find().limit(5)能夠查看前5條數據;使用db.xxx.find().skip(10)能夠查看10條之後的數據;而若是想要查看第5條到第10條的數據呢?使用db.xxx.find().limit(10).skip(5)
      • 使用db.xxx.find({$or:[{"name":25}, {"name":30}]})來查詢知足其中一條的數據.
      • 使用db.xxx.distinct("name")能夠查詢去除重複後的的數據.
  • 數據的更新

    數據的更新使用db.xxx.update({條件},{$set:{"name":"xiaoming"}}, {multi:true})能夠更新知足條件的數據,其中multi爲true時,表示更新全部符合條件的結果,而若是爲false,則更新僅僅一條數據.

    對於新版本,則推薦使用db.xxx.updateOne()來更新單個結果,而使用db.xxx.updateMany()能夠更新多個結果.

三.Mongo的複製與備份

  • 備份

    Mongo的數據複製能夠經過使用mongodump -h 【主機名】:【端口號】 -d 【數據庫名】-o 【備份的存儲路徑】-u 【用戶名】 -p 【密碼】來備份特定的數據庫,也能夠經過使用mongodump -h 【主機名】:【端口號】 -d 【數據庫名】-c 【集合名稱】-o 【備份的存儲路徑】-u 【用戶名】 -p 【密碼】來備份特定的集合.

  • 還原

    能夠把備份的數據從新還原到數據庫中,可使用mongorestore -h 【主機名】:【端口號】-d 【還原成爲的數據庫名】-u 【用戶名】 -p 【密碼】 –dir 【備份目錄】來把備份中的內容還原到數據庫中;也能夠經過mongorestore -h 【主機名】:【端口號】-d 【還原成爲的數據庫名】-u 【用戶名】 -p 【密碼】 –dir 【備份目錄的bson文件】來把備分內容還原到指定的collection中.

四.Mongo的高級操做

  1. 索引

    • 經過使用db.COLLECTION_NAME.ensureIndex(keys[,options])能夠建立索引,
    • 經過使用db.COLLECTION_NAME.reIndex()重建索引
    • 經過使用db.COLLECTION_NAME.getIndexes()查看索引
    • 經過使用db.COLLECTION_NAME.dropIndex("INDEX-NAME")能夠刪除指定的索引;也可使用db.COLLECTION_NAME.dropIndexes()刪除全部索引.

    集合中索引不能超過64個

  2. 引用式關係

    MongoDB 中的關係能夠是:

    • 1:1 (1對1)
    • 1: N (1對多)
    • N: 1 (多對1)
    • N: N (多對多)

    假如一個用戶信息中有地址字段,可是地址信息也是一個複雜的結構,那麼就須要把地址信息嵌入到用戶信息中,或者把地址信息的"位置"存放到用戶信息中,查找的時候,先要查找到"位置"信息,而後去取其中的地址.

相關文章
相關標籤/搜索