MongoDB常用命令

來源:互聯網
上載者:User

最近新的項目中使用了MongoDB,所以也就花了點時間學習了一下。這篇文章給自己的學習做一個總結,打算日後把這篇文章當做API來使用,也分享給一些準備學習的小夥伴,希望能幫到你們。
date: 2018-04-25 20:49:12

MongoDB常用命令

  最近新的項目中使用了MongoDB,所以也就花了點時間學習了一下。這篇文章給自己的學習做一個總結,順便日後把這篇文章當做API來使用,也分享給一些準備學習的小夥伴,希望能幫到你們。

基礎知識
  • mongo使用的預設資料庫名是test。 如果沒有建立任何資料庫,那麼集合及操作的資料將被儲存在test資料庫。
  • mongo中資料全部使用類json的文檔格式表示,mongo中稱為“bson”,下文中我會用“document”進行代替。
  • mongo與mysql的資料集合對應關係:
    • db=database,資料庫沒什麼好說的。
    • table=collection,在mongo中,集合有點類似於表的概念。
    • mongo中欄位還是有比較大的區別的,mongo的欄位不是根據collection的設定而決定的,是根據資料決定。比如,有如下兩條資料在同一collection中:
    {"_id":1,"name":"Bob","age":18}{"_id":2,"city":"北京"}
    你在視覺化檢視中看到的欄位可能是_id、name、age、city,只不過第一條資料city為空白,第二條資料name與age為空白;然而情況卻並不是這樣的,要講兩條資料分開理解,它們只是單純的歸屬於同一個彙總下而已,通過collection.find("_id":1)擷取回的資料,不會包含name與age,有點類似於二維數組,每一維的數組(資料)都是各自獨立的。
資料庫集合操作
  • use DATABASE_NAME
    例:use mydb
    將會跳轉到名為mydb的資料庫,如果該資料庫不存在,則建立該資料庫。
  • db
    查看當前選擇的資料庫
  • show dbs
    查看資料庫列表
  • db.dropDatabase()
    刪除當前資料庫
  • db.collections.drop()
    刪除當前集合
新增(Create)
  • insert
    db.COLLECTION_NAME.insert(document)
    若不指定_id則會自動產生一個隨機唯一的id,插入多條記錄可以使用
    db.COLLECTION_NAME.insert([doucument,document])
    例:
db.col.insert({    title: 'MongoDB',by: 'bfsan',tags:['mongodb', 'database', 'NoSQL'],likes: 100})  

此外還有inserOne()和inserMany(),使用這兩個方法可以返回插入文檔的id值,用法與insert一致。

更新(Update)
  • update
db.collection.update(    <query>,    <update>,    {        upsert: <boolean>,//true則對於不存在對應情況的記錄會新增,存在則會修改        multi: <boolean>,//true則會修改多條記錄        writeConcern: <document>//(可選)寫安全,用的不多,詳細內容請再查詢    })

例:

db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );//對count>15的所有記錄,count=count+1db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );//對查詢是否存在count>4的記錄,存在則為查到的第一條記錄(增加/修改)test5=OK,不存在則增加一條test5=OK的記錄
  • save
db.collection.save(    <document>,    {writeConcern: <document>})

save方法通過傳入文檔來替換已有文檔,如不指定id則為新增,自動分配id,如果指定_id,替換包含_id的記錄的全部資料。

刪除(Delete)
  • delete
db.collection.remove(    <query>,//當條件為空白時,則清空該collection    {        justOne: <boolean>, //true或1,則只刪除第一個文檔        writeConcern: <document>    })
查詢(Retrieve)
  • find
db.collection.find(<query>, <projection>)//query條件,省略則查詢所有;projection投影出指定的列,省略則顯示所有列
查詢條件
功能 文法
等於 {key:value}
小於 {key:{$lt:value}}
小於或等於 {key:{$lte:value}}
大於 {key:{$gt:value}}
大於或等於 {key:{$gte:value}}
不等於 {key:{$ne:value}}
and {key1:value1, key2:value2}
or {$or:[{key1: value1},{key2:value2}]}
not {key:{$not:value}}
in {key:{$in:array}}
not in {key:{$nin:array}}
all {key:{$all:array}}
是否存在 {key:{$exists:true/false}}
匹配某種資料類型的記錄 {key:{$type:type}}
結果處理
.pretty()       //格式化結果顯示,使結果格式自動縮排符合規範。.limit(n)       //顯示前n條記錄.skip(n)        //跳過前n條記錄.sort({key:1/-1})   //排序,1升序,-1降序

註:當查詢時同時使用sort,skip,limit,無論調用先後,執行順序總是sort-skip-limit。

串連查詢
  • 借用變數進行中轉,必需使用findOne方法才能儲存進變數
var result = db.users.findOne({"name":"Tom Benzamin"},{"address_ids":1})var addresses = db.address.find({"_id":{"$in":result["address_ids"]}})
  • $lookup指令
    mongo提供的左外串連查詢,文法格式為
    $lookup:{from,localField,foreignField,as}
    需要使用彙總命令來操作,格式為
    db.COLLECTION_NAME.aggreate({$lookup:{from,localField,foreignField,as}})
    • from,所要關聯的集合名
    • localField,本集合中的“外鍵”
    • foreignField,所要關聯集合中的欄位
    • as,輸出串連的文檔所到的欄位名
彙總
db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)常用操作:    {$project:{key:1/0}}    修改輸入文檔的結構。可以用來重新命名、增加或刪除欄位,也可以用於建立計算結果以及嵌套文檔。    {$match:{query}}    用於過濾資料,只輸出合格文檔。    {$limit:n}      用來限制返回的文檔數。    {$skip:n}       在跳過指定數量的文檔。    {$sort:{key:1/-1}}  將文檔排序後輸出。    $group          將集合中的文檔分組,可用於統計結果。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.