MongoDB的操作

mongoDB的概念

  1. MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng)。在高負載的情況下,添加更多的節(jié)點,可以保證服務(wù)器性能。
  2. MongoDB 旨在為WEB應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。
  3. MongoDB 將數(shù)據(jù)存儲為一個文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。

mongoDB的安裝與啟動

  1. 安裝mongoDB
brew install mongodb
  1. 新建文件夾 (名字自取) 這里以database
  2. 啟動mongodb服務(wù)器
 mongod --dbpath=文件路徑
  1. 進入服務(wù)器環(huán)境
mongo
  1. 查看數(shù)據(jù)庫
show dbs

初始數(shù)據(jù)庫的狀態(tài)


19DB3BBEC6E07E186364E463F476330C.png

mongoDB的操作

操作mongo基礎(chǔ)

下面是數(shù)據(jù)庫與mongoDB的對比圖,構(gòu)成有相似的,也有不同的


6256A0FE1A648795B3EF021425581CB0.png
  1. 創(chuàng)建數(shù)據(jù)庫
    先use 要創(chuàng)建的數(shù)據(jù)庫名,如果數(shù)據(jù)庫名已存在,則切換到此數(shù)據(jù)庫中;如不存在,則創(chuàng)建數(shù)據(jù)庫
// 創(chuàng)建一個users數(shù)據(jù)庫
user users
  1. 創(chuàng)建一個數(shù)據(jù)庫集合person,并添加數(shù)據(jù)
db.person.insert({name:"張三",age:20})
  1. 查看當前使用的數(shù)據(jù)庫
db
  1. 刪除數(shù)據(jù)庫
db.dropDatabase() 
  1. 斷開連接
exit

操作集合

  1. 查看當前數(shù)據(jù)庫下有哪些集合
show collections
  1. 創(chuàng)建集合
db.createCollection(collection_Name)
  1. 刪除集合
db.collection_Name.drop()

文檔操作

這里以person集合為例
1.insert 添加數(shù)據(jù):
db.COLLECTIONNAME.insert({name:"張三",age:20})

db.person.insert({name:'馬云',age:37})
  1. save 添加與更新:
    如果通過id能找到就是更新,如果找不到就是添加;
  • 添加
db.person.save({name:"李四"})
  • 更新
db.person.save({'_id':ObjectId("5a67f5221df8d5687e847094"),name:'王五',age:21}
  1. update 更新:(默認更新符合條件的第一條)
    db.COLLECTIONNAME.update({條件},{更新的內(nèi)容},{配置項(如果要更新能夠匹配的多個選項 multi:true)})
    下列更新名字叫馬云的年齡為42
db.person.update({name:"馬云"},{$set:{age:42}})

如果表中有多個馬云,若想更新所有名字叫馬云的年齡,就需要使用到第三個參數(shù)multi

db.person.update({name:"馬云"},{$set:{age:18}},{multi:true})
  1. remove 刪除:(默認刪除符合條件的所有數(shù)據(jù))
    db.COLLECTIONNAME.remove({name:'張三'},{配置項(可選:justOne)});
    刪除名字叫馬云的一條數(shù)據(jù),需配置第三個參數(shù)justOne
db.person.remove({name:'馬云'},{justOne:true})
  1. find數(shù)據(jù)的查詢
  • 所有數(shù)據(jù)的查詢
    db.COLLECTIONNAME.find()
db.person.find()

集合person中的字段


860A4BC9ACFD105C617F75ED5E26A0DA.png
  • find({條件},{字段})
    條件:大于gt 小于lt 大于等于gte 小于等于 lte 不等于 ne;等于就直接使用冒號
  1. 第一個參數(shù):
    查詢大于28的數(shù)據(jù)
db.person.find({age:{$gt:28}})

查詢年齡等于30的數(shù)據(jù)

db.person.find({age:30})
  1. 第二個參數(shù):字段 如:{name:1,age:1}
    查詢年齡大于28的所有名字
db.person.find({age:{$gt:28}},{name:1})

查詢結(jié)果中除了id便只有name一個字段,第二個參數(shù)限定需要查詢的字段


CFC06F0A971EB48185C4778065599FEE.png
  • like 關(guān)鍵字
    在mongoDB的操作中比數(shù)據(jù)操作更加靈活,他可以用正則表達式查詢各種條件的數(shù)據(jù)
    查詢以"馬"開頭的數(shù)據(jù) db.COLLECTIONNAME.find({name:/^馬/})
db.person.find({name:/^馬/})
  • 并且關(guān)系:直接寫在對象里,逗號隔開
    查詢數(shù)據(jù)名字是"馬云"并且年齡是48;
db.person.find({name:'馬云',age:40})
  • $or 或者關(guān)系
    查詢年齡等于48或者28
db.person.find({$or:[{age:30},{age:40}]})
  • 分頁:關(guān)鍵字skip和limit
    跳過兩條從第三條開始查詢兩條數(shù)據(jù)
db.person.find().skip(2).limit(2)
  • 排序: 關(guān)鍵字sort
    參數(shù):1代表正序;-1代表倒序
    以年齡正序排序
db.person.find().sort({age:1})
  • 查詢數(shù)量: 關(guān)鍵字count
db.person.find().count();

上面這些的查詢的命令單個看起來還挺容易的,但混合使用還是很容易出錯的,這就需要大家細心的去寫了。
最后寫個簡單的綜合查詢:
查詢所有姓李或者是姓王的;按照年齡倒序排列;只查詢結(jié)果的2條數(shù)據(jù)

db.person.find({$or:[{name:/^李/},{name:/^王/}]}).sort({age:-1}).skip(0).limit(2)

結(jié)束語

MongoDB的擴展性好,并且支持多種匯編語言,由于使用JSON形式的存儲,使之更加容易查詢文檔中的對象或數(shù)組。好用的不要不要的。。。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. MongoDB 簡介 MongoDB是一個可擴展的高性能,開源,模式自由,面向文檔的NoSQL,基于分布式文...
    rhlp閱讀 1,229評論 0 3
  • NoSql數(shù)據(jù)庫優(yōu)缺點 在優(yōu)勢方面主要體現(xiàn)在下面幾點: 簡單的擴展 快速的讀寫 低廉的成本 靈活的數(shù)據(jù)模型 在不足...
    dreamer_lk閱讀 2,878評論 0 6
  • nodejs 操作 mongodb 數(shù)據(jù)庫 新建文件夾 npm install mongodb npm insta...
    代碼界的小學生閱讀 431評論 0 1
  • 學習《MongoDB 權(quán)威指南·第2版》的筆記,結(jié)合 MongoDB 官方最新文檔(v3.6),簡單記錄一些概念、...
    小魚愛小蝦閱讀 6,215評論 0 5
  • 2017年6月13日,陰轉(zhuǎn)雨 謝芝英特種兵訓練第二天課后總結(jié) 今天上中班,店里也不怎么忙,雖然我們老板挺支持我做微...
    FAB小謝妹閱讀 418評論 0 0

友情鏈接更多精彩內(nèi)容