MongoDB總結(jié)(一)

漲姿勢

1.MySQL與Mongo中的一些概念對比:

SQL術(shù)語/概念            MongoDB術(shù)語/概念            解釋/說明
database                database                    數(shù)據(jù)庫
table                   collection                  數(shù)據(jù)庫表/集合
row                     document                    數(shù)據(jù)記錄行/文檔
column                  field                       數(shù)據(jù)字段(列)/域
index                   index                       索引
table joins                                         表連接,MongoDB不支持
primary key             primary key                 主鍵,MongoDB自動將_id字段設置為主鍵

基本語法規(guī)則

1.DDL語法(操作數(shù)據(jù)庫及表的結(jié)構(gòu))

----++----對數(shù)據(jù)庫的操作----++----
1.1 查看所有數(shù)據(jù)庫

show dbs    #查看所有數(shù)據(jù)庫
db  #查看當前數(shù)據(jù)庫

1.2 創(chuàng)建及使用數(shù)據(jù)庫:

#若沒有此數(shù)據(jù)庫則創(chuàng)建
use tbl

1.3刪除數(shù)據(jù)庫

#刪除當前數(shù)據(jù)庫
db.dropDatabases()

----++----對集合結(jié)構(gòu)(MySQL中的表)的操作----++----

1.4 創(chuàng)建集合

db.createCollection(name,options)
db.createCollection("mycol", {capped : true, autoIndexId : true, size : 6142800, max : 10000 })
e.g.    db.createCollection("mycollection") 

options參數(shù)是可選的,因此只需要指定集合的名稱。 以下是可以使用的選項列表:

字段                  類型                  描述
capped              Boolean(可選)          如果為true,則啟用封閉的集合。上限集合是固定大小的集合,它在達到其最大大小時自動覆蓋其最舊的條目。 如果指定true,則還需要指定size參數(shù)。
autoIndexId         Boolean (可選)         如果為true,則在_id字段上自動創(chuàng)建索引。默認值為false。
size                數(shù)字  (可選)            指定上限集合的最大大小(以字節(jié)為單位)。 如果capped為true,那么還需要指定此字段的值。
max                 數(shù)字  (可選)            指定上限集合中允許的最大文檔數(shù)。

在插入文檔時,MongoDB首先檢查上限集合capped字段的大小,然后檢查max字段。

1.5 查看數(shù)據(jù)庫中的所有集合

show collections
或
show tables

1.6 查看集合的結(jié)構(gòu)

db.mycol1.find()

1.7 刪除集合

db.mycol1.drop()

修改集合:

mongoDB沒有表的概念,都是一個個集合,所以這里只說一個修改集合的鍵值的方法。

1.8 修改集合之修改鍵值(MySQL中對應為字段名)

db.mycol1.update({}, {$rename:{"舊鍵名稱":"新鍵名稱"}}, false, true)

第一個false表示:可選,這個參數(shù)的意思是,如果不存在update的記錄,true為插入新的記錄,默認是false,不插入。

第二個true表示:可選,mongodb 默認是false,只更新找到的第一條記錄,如果這個參數(shù)為true,就把按條件查出來多條記錄全部更新。

2.DDL語法(數(shù)據(jù)操作)

2.1 增

法一:

db.mycol1.insert({
    name:'zhangsan',
    age:23,
    phone:1877768121
})

法二:

document = ({
    name:'lisi',
    age:19,
    phone:15633577595
});

db.mycol1.insert(document)

2.2 改

2.2.1 update()方法

db.collection.update(criteria,objNew,upsert,multi)

參數(shù)說明:
query:用于設置查詢條件的對象,可以理解為sql查詢中的where后面的
update:用于設置更新內(nèi)容的對象,也可以理解為sql update查詢內(nèi)set后面的
upsert:如果記錄不存在是否新增一個記錄,默認false
multi:如果有多個符合條件的記錄,是否全部更新,默認為false
writeConcern :可選,拋出異常的級別。

db.mycol1.update(
   <query>,
   <update>,
   {
     upsert: <boolean>,
     multi: <boolean>,
     writeConcern: <document>
   }
)

e.g.

#將用戶名稱為"zhangsan"用戶的年齡更改為18。    
db.col_1.update({name:'zhangsan'},{$set:{age:18}})
#后面默認為false,false,這兩個組合可以分出很多情況。

2.2.1 save()方法

save()方法為替換原有文檔

db.mycol1.save({
    "_id" : ObjectId("56064f89ade2f21f36b03136"),
    "title" : "MongoDB",
    "description" : "MongoDB 是一個 Nosql 數(shù)據(jù)庫",
    "by" : "Runoob",
    "url" : "http://www.runoob.com",
    "tags" : [
            "mongodb",
            "NoSQL"
    ],
    "likes" : 110
})

2.3 刪

db.collection.remove(
   <query>,
   {
     justOne: <boolean>,
     writeConcern: <document>
   }
)
以下為實例:

#刪除所有的文檔
db.mycol1.remove({})

#移除集合中查詢到的數(shù)據(jù)的第一條,后面設成1或者true,表示只刪除一個文檔。
db.mycol1.romve({name:'zhangsan'},1)

3.DQL語法(數(shù)據(jù)查詢)

3.1 基礎語法:

MongoDB 查詢數(shù)據(jù)的語法格式如下:
db.collection.find(query, projection)
query :可選,使用查詢操作符指定查詢條件
projection :可選,使用投影操作符指定返回的鍵。查詢時返回文檔中所有鍵值, 只需省略該參數(shù)即可(默認省略)。
如果你需要以易讀的方式來讀取數(shù)據(jù),可以使用 pretty() 方法,語法格式如下:
>db.col.find().pretty()
pretty() 方法以格式化的方式來顯示所有文檔。

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

db.mycol1.find()        #查詢所有文檔
db.mycol1.findOne()     #查詢第一個文檔
db.mycol1.find().pretty()   #查詢所有文檔并格式化輸出
db.mycol1.find().count()    #查詢到的文檔的數(shù)目
db.mycol1.find().skip()     #跳過指定數(shù)量的數(shù)據(jù)
db.mycol1.find().limit()    #顯示文檔數(shù)

e.g.讀取十條數(shù)據(jù)后的100條記錄
db.mycol1.find().skip(10).limit(100)

3.2 查詢+where語句

如果你想獲取"col"集合中 "likes" 大于100,小于 200 的數(shù)據(jù),你可以使用以下命令:

db.mycol1.find({likes : {$lt :200, $gt : 100}})

// 類似于SQL語句:
Select * from mycol1 where likes>100 AND  likes<200;

條件操作符       中文          全英文
    $gt         大于          greater than
    $gte        大于等于       greater than equal
    $lt         小于           less than
    $lte        小于等于        less than equal
    $ne         不等于         not equal

3.3 AND條件

find() 方法可以傳入多個鍵(key),每個鍵(key)以逗號隔開,語法格式如下:

db.col_1.find({name:'zhangsan',age:18}).pretty()

3.4 OR 條件

db.col_1.find({$or:[{name:'zhangsan'},{age:20}]}).pretty()

3.5 AND 和 OR 聯(lián)合使用

db.col_1.find({"likes":{$gt:50},$or:[{age:20},{phone:15633577595}]}).pretty()

3.6 $exists()

$exists,用于查詢集合中存在某個鍵的文檔或不存在某個鍵的文檔,例如查詢col_1集合中存在name鍵的所有文檔

db.col_1.find({name:{$exists:1}})

3.7 $in和$nin

查詢年齡在18,19,20在這個區(qū)間的文檔

db.col_1.find({age:{$in:[18,19,20]}})

查詢年齡不在18,19,20在這個區(qū)間的文檔

db.col_1.find({age:{$nin:[18,19,20]}})

部分部署可參考:http://blog.csdn.net/sinat_36841379/article/details/70653027

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

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

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