MongoDB基礎總結

1、數據可基本操做

1. 建立數據庫mysql

use  databaseName程序員

選擇一個數據庫,若是數據庫不存在就自動建立一個數據庫sql

只有向數據庫中插入數據時,數據庫纔會被真實建立出來,而當數據庫中沒有數據時,use不會立刻建立數據庫,mongodb

這個特色有效減小了存儲空間的佔用。數據庫

2. 查看數據庫分佈式

show dbs函數

mongodb中默認有如下幾個數據庫:spa

admin  存放用戶和權限對象

local   存放本地化數據(分佈式部署)utf-8

config  存儲分片信息

3. 刪除數據庫

 db.dropDatabase()  

注意:mongodb中函數都用小駝峯命名

 

4. 建立集合

db.createCollection(collection_name)

5. 查看集合

show collections 或者 show tables

注意集合的命名規則:

1) 合法的utf-8字符串

2) 不能有’\0’

3) 不能以system開頭,由於是系統的保留前綴

4)不能和關鍵字重複

 

6. 刪除集合

db.collection_name.drop()

7. 集合重命名

db.collection_name.renameCollection(‘new_name’)

 

8. 獲取集合對象

db.getCollection(‘collection_name’)

等價於db.collection

 2、集合中增添數據

 1. insert方法插入數據

語法:

db.collection_name.insert({數據內容})

 當向一個集合中插入數據的時候,若是這個集合不存在則自動建立

 最近插入的數據文檔在數據庫的最上方顯示

 插入的數據域默認是字符串,若是在插入字段中不用雙引號,數據庫後臺就會自動加上

同時插入多條文檔

db.collection_name.insert([{ }, { }, { }])

2. save方法插入文檔

db.collection_name.save()

saveinsert的區別

若是加_id,若是這個_id域的值已經存在,則會替換原有的文檔,而insert是不容許插入相同

_id

3、集合中刪除數據

MongoDB刪除數據的命令比較簡單,也沒有太多的變化

語法:

db.collection.remove(query ,justOne)

參數:

query與下文查詢操做的query相同,justone表示只是刪除匹配到的多條文檔中的第一條文檔

4、集合查詢操做

1. 查詢文檔(重點

語法:

db.collection_name.find(query,field)

至關於 mysql中的 select * 

query 篩選條件,至關於MySQLwhere子句

field  選擇要展現的域

返回值: 返回查找到的文檔

須要理解的點:

query field都是可選參數,不寫參數就默認顯示全部文檔,也只有查找時不用傳入query,通常其餘操做都須要傳入query進行篩選

query  以鍵值對的形式給出查找條件

field   以鍵值對的形式給出要展現或者不展現的 域爲鍵,值時0時不顯示該域, 值是1時顯示該域,這是mongodb特有的特性

例如:爲了不看到一大串的id值,在查找時_id 域常常會被設置爲0

 db.class.find( {},{_id :0} )  除了_id 域,其餘域都正常顯示

注意:

1. 在寫第二個參數時必需要寫第一個參數

2. 第二個參數只能同時限制多個域的0/1值,不能多個域都設置不一樣,不然其餘沒設置的域會混亂,_id域的設置除外(即不管_id域怎麼設

置都不影響其餘域的設置)

 query的使用

由於鍵值對沒法進行像MySQLwhere子句那樣強大的篩選做用(鍵值對篩選至關於MySQLwhere子句篩選的等於條件),mongodb引入了操做符操做符的表達形式是以鍵值對形式出現的。下面介紹幾種經常使用的操做符,更多的操做符能夠查看Mongodb的官方文檔。

1)比較操做符

$eq  等於操做符

例如:db.class.find( {age: {$eq : 18} },{_id :0} )

更多操做符:

    $gt   大於操做符 

    $lt   大於操做符

    $ lte  小於等於操做符

   $gte  大於等於操做符

   $ne   不等於操做符

 細節:mongodb中多種類型的數據都是能夠比較的,例如數值類型,字符串類型

2)範圍操做符

$ in [ ]   在範圍集合內的文檔被匹配 (連續的範圍)

例如:db.class.find( {age: {$in : [18, 23]} },{_id :0} )

若是是用 $ and只能這樣表達: $and:[{age:{$gt:.. } }, {age:{$lt:.. } } ]

gtlt一塊兒用來把範圍括起來

 $ nin[ ]  不在範圍集合內的文檔被匹配

3)邏輯操做符

1. $ and: [ ]   和運算符

query 中若是多個條件用逗號隔開,就爲and關係(相似mysql中的where子句中的and

例如:db.class.find( {$and: [{age: {$ gt 17, {age: {$ lt 22} ],{_id :0} )  查詢年齡大於17,小於22的同窗

$ and 能夠改寫爲 db.class.find({$ and : [{ age: 17} ,{sex: ‘M’ } ] },{_id :0} )

[ ]內必定要分紅連個字典來表示兩個條件,不然(只用一個字典來包含兩個條件並用逗號分隔)在語法上就只表示一個條件,只不過這個條件裏面包含兩個條件而已

通常日常使用多直接用逗號來分隔條件而不用 $and的操做符

 

2 .$ or  或運算符

語法表達上跟 $ and 同樣,表達的是或邏輯篩選

 

1. $not  取反運算符

db.class.find( {age: {$not {$ gt 17} } },{_id :0} )  匹配年齡小於等於17的文檔

注意: $not 通常添加在條件值的前面,對值進行取反

 

2. $ nor  既不也不運算符

not(A or B) --> not A and not B

db.class.find({$ nor : [{ age: 17} ,{sex: ‘M’ } ] },{_id :0} )

 注意:若是篩選匹配的文檔的域是其餘文檔不具有的;即一個域有些文檔有值,有些文檔沒值,這種篩選是沒法匹配的

 

2. 查詢操做的另外一條語法

findOne(query,field)

查找符合條件的第一條文檔

參數跟find同樣

5、集合更新操做 

1. 修改文檔內容操做

語法:

db.collection.update(query,update,upsert,multi)

mysql不一樣,mongodb全部修改操做都用update,包括對集合的域值的修改和集合結構的修改

參數:query     篩選要修改的文檔,至關於where

     update    將篩選的文檔修改成什麼內容,至關於set,須要配合修改操做符一塊兒使用

     upsert     布爾值,默認爲false,若是query文檔不存在則不進行修改  ,若是爲true,在文檔不存在條件下,則根據queryupdate插入新文檔

     multi       布爾值,默認爲false若是query篩選的爲多條,則只修改第一條,若是設置爲true,則修改全部符合條件文檔

 注意:

upset 通常爲用默認值false,由於若是本來沒匹配的文檔,頗有多是程序員本身輸錯了某些內容

 

修改操做符:

$ set

若是沒有該文檔,須要插入的時候是根據查詢條件和設置條件做爲域來插入的

若是須要修改的值爲多個,就像插入數據同樣,將不一樣域的值用一個{ }包起來,例如:

db.class.update({name:'小張'},{$set:{age:16,sex:'m'}},true)

相關文章
相關標籤/搜索