Mongodb快速入門

1.Why MongoDB?

我個人有個習慣,要學習某個東西,我一定會去了解它的優點,不然我爲什麼要把時間花在上面呢?瞭解後,開始迅速地入門操作吧

1.安裝MongoDB,啓動service

2../mongo啓動客戶端

3.切換數據庫,如果不存在名爲dummy的數據庫,則創建 .類比於oracle的實例

use dummy
4.創建集合,類比於sql數據庫裏的table
db.createCollection('author')

5.查看所有數據庫以及當前數據庫下的集合

show databases/collections

6.刪除集合

db.author.drop

7.向集合中插入數據,一個數據塊是一個文檔,類比於SQL數據庫表裏的一行。結構爲bson(簡單理解爲存儲爲二進制的json),各文檔的數據結構可以不同,使用靈活

db.createCollection('movie')

  db.movie.insert(
{
	title:'yingziairen',
	director:'hehe',
	stars:['Angela Zhang','Jin Boran'],
	tags:['romance','drama'],
	debut: new Date(1994,7,6,0,0),
   	likes: 864367,
  	dislikes: 30127,
   	comments:[
	{
		name:'zj',
		text:'good,i like it',
		like:'10000'
	},
	{
		name:'wj',
		text:'angela is so beautiful!',
		like:'12345'
	}
   ]
}
)

8.插入多個document

db.movie.insert([
 {
   title: 'Fight Club', 
   director: 'David Fincher',
   stars: ['Brad Pitt', 'Edward Norton', 'Helena Bonham Carter'],
   tags: 'drama',
   debut: new Date(1999,10,15,0,0),
   likes: 224360,
   dislikes: 40127,
   comments: [	
      {
         name:'user7',
         text: 'Good Movie!',
         dateCreated: new Date(2009,10,11,6,20),
         like: 2
      }
   ]
},
{
   title: 'Seven', 
   director: 'David Fincher',
   stars: ['Morgan Freeman', 'Brad Pitt',  'Kevin Spacey'],
   tags: ['drama','mystery','thiller'],
   debut: new Date(1995,9,22,0,0),
   likes: 134370,
   dislikes: 1037,
   comments: [	
      {
         name:'user3',
         text: 'Love Kevin Spacey',
         dateCreated: new Date(2002,09,13,2,35),
         like: 0 
      },
      {
         name:'user2',
         text: 'Good works!',
         dateCreated: new Date(2013,10,21,6,20),
         like: 14 
      },
      {
         name:'user7',
         text: 'Good Movie!',
         dateCreated: new Date(2009,10,11,6,20),
         like: 2
      }
   ]
}
])

9.查詢

db.movie.find().pretty() //pretty()經過美化後的輸出格式

db.movie.find('director':'hehe') 
db.movie.find({'director': 'David Fincher','stars':'Morgan Freeman'})  //AND對於包含多個值的key只要符合一個就可以了
db.movie.find({$or:[{'stars':'Morgan Freeman'},{'stars':'Angela Zhang'}]}) //or
db.movie.find({likes:{$gt:10000}})   $gt,$lt,$get,$let<=,$ne key的引號可要可不要
db.movie.findOne(director:'David Fincher') 按磁盤存儲順序返回第一個。請注意,findOne()自帶pretty模式,所以不能再加pretty()
db.movie.find().skip(1).limit(1) 跳過第一條記錄,從第二條開始查一條
db.movie.find({'tags':'drama'},{'debut':1,'title':1,'_id':0}).pretty()  //select非*,find的第二個參數是用來控制輸出的,1表示要返回,而0則表示不返回。默認值是0,但_id是例外
db.movie.find({title:/ingz/}).pretty() //使用正則表達式查詢where title like '%ingz%'
db.movie.find({'comments.name':'zj'})  //通過內嵌json的K-V過濾
10.更新:
db.movie.update({title:'Seven'},{$set:{likes:134371}})
db.movie.update({title:'Seven'}, {$inc:{likes:2}}) 增量更新
注意如果有多部符合要求的電影。則默認只會更新第一個。如果要多個同時更新,要設置{multi:true}
db.movie.update({}, {$inc:{likes:10}},{multi:true})
以上的更新操作會替換掉原來的值,所以如果你是想在原有的值得基礎上增加一個值的話,則應該用$push
db.movie.update({'title':'Seven'}, {$push:{'tags':'popular'}})
db.movie.update({'title':'Seven'}, {$set:{'tags':'popular'}}) //原tags爲array,變爲String類型

11.刪除:

db.movie.remove({'tags':'romance'})
上面的例子會刪除所有標籤包含romance的電影。如果你只想刪除第一個,則
db.movie.remove({'tags':'romance'},1)

12.排序:
排序:1升序,-1降序
db.movie.find().sort({'title':1}).pretty()


windows下圖形化界面mongo客戶端推薦:robo 3T

軟件直接上手,支持shell操作。僅提1點剛接觸容易被往常經驗坑的地方:

1.輸入查詢條件後回車不會執行,需要按F5執行

後記

本篇blog爲mongoDB學習入門筆記,希望能幫到初識mongo的人(尤其是測試人員瞭解增刪改查以及排序)瞭解mongoDB最最基本的操作,參考的原文鏈接:

https://github.com/StevenSLXie/Tutorials-for-Web-Developers/blob/master/MongoDB%20%E6%9E%81%E7%AE%80%E5%AE%9E%E8%B7%B5%E5%85%A5%E9%97%A8.md


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章