MongoDB基本使用方法


mongo與關系型數據庫的概念對比,區分大小寫,_id為主鍵。

 

一、數據庫操作

>show dbs或者show databases   #查看所有數據庫

>use dbname    #創建和切換數據庫(如果dbname存在則切換到該數據庫,不存在則創建並切換到該數據庫;新創建的數據庫不會顯示,需要插入記錄才會顯示)

>db.dropDatabase()  #刪除數據庫(需要先use進入到需要刪除的數據庫)

 

二、集合操作

>show collections或者show tables  #查看集合(需要先use進入數據庫)

>db.createCollection(集合名字,參數)   #創建集合

>db.集合名.drop()   #刪除集合

 

三、文檔操作

在對文檔做操作時,文檔的字段名可以加引號,也可以不加引號。

1.插入文檔 db.集合名.insert(文檔) 

如果集合在該數據庫中不存在會先創建集合;文檔為字典形式,可以是單個的字典,也可以是由字典組成的列表

>db.col.insert({
    title: 'MongoDB教程', 
    description: 'MongoDB是一個Nosql數據庫',
    by: '菜鳥教程',
    url: 'https://www.runoob.com/mongodb/mongodb-tutorial.html',
    tags: ['mongodb', 'database', 'NoSQL'],
    likes: 100
})

>db.col.insert({
    title: 'MySQL教程', 
    description: 'MySQL是一個sql數據庫',
    by: '菜鳥教程',
    url: 'https://www.runoob.com/mysql/mysql-tutorial.html',
    tags: ['MySQL', 'database', 'SQL'],
    likes: 200
})

插入文檔也可以使用db.集合名.save(document) 命令,如果不指定 _id字段save() 方法類似於insert() 。

 

2.查詢文檔

db.集合名.find(查詢條件,篩選列).pretty() ,查詢條件和篩選列都通過字典形式表達

查詢條件篩選行:多個條件and查詢:find({'k1':'v1','k2':'v2',...}),相當於關系型數據庫中的where k1=v1 and k2=v2 and ...

查詢條件篩選行:多個條件or查詢:find({ $or:[ {'k1':'v2'},{'k2':'v2'},...] }),相當於關系型數據庫中的where k1=v1 or k2=v2 or

刪選列:{'_id':0,'k1':1,'k2':1...},1表示返回0表示不返回,_id如果不指定為0默認表示返回,相當於關系型數據庫中的select field1,field2,... from 

             在指定的所有列中,除了_id其他所有的值要么都為1,表示指定列返回未指定列不返回,要么都為0表示指定列不返回其他列返回

限定返回結果的數量:limit(n),返回查詢結果的前n條

排序:sort({'key':1}),按照key字段排序,值為1則升序排,-1則降序排

find是以非結構化的形式顯示所有文檔,加上pretty()以結構化的形式顯示,對應的findOne方法返回第一個滿足條件的文檔

> db.col.find({'title':'MongoDB教程'}).pretty()
{
        "_id" : ObjectId("5d2e94f240515ad8a4693240"),
        "title" : "MongoDB教程",
        "description" : "MongoDB是一個Nosql數據庫",
        "by" : "菜鳥教程",
        "url" : "https://www.runoob.com/mongodb/mongodb-tutorial.html",
        "tags" : [
                "mongodb",
                "database",
                "NoSQL"
        ],
        "likes" : 100
}

 

mongo也支持邏輯查詢,

 例如

>db.col.find({'likes':{$gt:200,$lte:200}}).sort({'likes':1})

 

db.集合名.distinct(k)

獲取所有不重復的k字段的值

 

3.更新文檔

db.集合名.update(查詢條件,更新操作,{upsert: <boolean>,multi: <boolean>,writeConcern: <document>})  

  • 更新操作:形式為{ $set:{key:value} }
  • upsert : 可選,表示如果要update的記錄不存在是否將其插入為新記錄,默認是false不插入,true則插入。
  • multi : 可選,表示是否更新所有滿足條件的記錄,默認是false只更新找到的第一條記錄,true則將滿足條件的所有記錄全部更新。
  • writeConcern :可選,拋出異常的級別。
> db.col.update({by:'菜鳥教程'},{$set:{likes:500}},{upsert:true,multi:true}) 
  WriteResult({ "nMatched" : 2, "nUpserted" : 0, "nModified" : 2 })

 

db.集合名.save(文檔)     

如果不傳入_id,則該方法類似insert(),會插入一個文檔

如果傳入_id,則會對_id進行判斷,如果要save的記錄在原集合中存在,則按照內容對已存在的文檔進行更新,如果不存在則進行插入也類似insert()。

> db.col.save({
    "_id" : ObjectId("5d2e960d40515ad8a4693241"),
    title: 'Python教程',
    description: 'Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言',
    by: '菜鳥教程',
    url: 'https://www.runoob.com/python3/python3-tutorial.html',
    tags: ['Python', '開發', '編程'],
    likes: 1000
 })
 WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

 

db.col.save({
    "_id" : ObjectId("5d2e960d40515ad8a4693250"),
    title: 'HTML',
    description: '是一種用於創建網頁的標准標記語言',
    by: '菜鳥教程',
    url: 'https://www.runoob.com/html/html-tutorial.html',
    tags: ['HTML', '前端', '編程'],
    likes: 300
})
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0 })

 

4.刪除文檔 db.集合名.remove(queryjustOne,writeConcern 

  • query :(可選)刪除文檔的條件,用字典形式表示。
  • justOne : (可選)如果設為 true 或 1,只刪除一個文檔,不設置該參數使用默認值 false,刪除所有匹配條件的文檔。
  • writeConcern :(可選)拋出異常的級別。
>db.col.remove({by:'菜鳥教程'},1)
WithResult({"nRemoved":1})
>db.col.remove({by:'菜鳥教程'})
WithResult({"nRemoved":2})


db.col.remove({})刪除所有文檔

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM