基礎(chǔ)知識
特點
- 是一個面向文檔存儲的數(shù)據(jù)庫抡锈,操作起來比較簡單和容易
- 可以在 MongoDB 記錄中設(shè)置任何屬性的索引值
- 可以通過本地或者網(wǎng)絡(luò)創(chuàng)建數(shù)據(jù)鏡像
一些術(shù)語
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字段設(shè)置為主鍵 |
數(shù)據(jù)庫
- 一個 MongoDB 可以建立多個數(shù)據(jù)庫
- "show dbs"可以顯示所有數(shù)據(jù)的列表
- 數(shù)據(jù)庫不能是空字符串豌拙、不得含有空格菇存、空字符
- 應全部小寫
- 最多64字節(jié)
- 特殊數(shù)據(jù)庫:admin侧纯、local嘉栓、config
文檔
- 文檔是一組鍵值對(BSON)
- take care:
(1) 文檔中的鍵值對是有序的
(2) 文檔中的值不僅可以是字符串,也可以是其它幾種數(shù)據(jù)類型
(3) MongDB 的文檔不能有重復的鍵
(4) MongoDB 區(qū)分類型和大小寫
(5) 文檔的鍵是字符串捐祠,除了少數(shù)例外的情況碱鳞,鍵可以使用任意UTF-8字符
- 文檔鍵命名規(guī)范
(1)不能含有空字符,這個字符用來表示鍵的結(jié)尾
(2). 和 $ 有特別的意義雏赦,只有在特定環(huán)境下才能使用
(3)以下劃線開頭的鍵是保留的
集合
- 集合就是MongoDB的文檔組
- 集合存在于數(shù)據(jù)庫劫笙,沒有固定的結(jié)構(gòu)
objectId
- 類似唯一地主鍵,可以很快去生成和排序星岗,包含了12bytes填大, 4時間戳--3機器標識碼--2PID--3隨機數(shù)
- 可以通過getTimestamp函數(shù)來獲取到文檔的創(chuàng)建時間
# 取文檔的創(chuàng)建時間:
> var newObject = ObjectId()
> newObject.getTimestamp()
ISODate("2017-11-25T07:21:10Z")
# ObjectId轉(zhuǎn)為字符串:
> newObject.str
5a1919e63df83ce79df8b38f
相關(guān)操作
MongoDB創(chuàng)建數(shù)據(jù)庫
- 創(chuàng)建數(shù)據(jù)庫
> use mydatabase
switched to db runoob
> db
mydatabase
>
- 查看數(shù)據(jù)庫
> show dbs
> db
MongoDB刪除數(shù)據(jù)庫
- db.dropDatabse()
- db.collecion.drop() 刪除集合,其中collection是集合的名字
MongoDB創(chuàng)建集合
- db.createCollection(name, options)
name
要創(chuàng)建的集合名稱
options
指定有關(guān)內(nèi)存大小以及索引的選項 - 在MongoDB中俏橘,不需要創(chuàng)建集合允华,當需要插入文檔時,MongoDB會自動創(chuàng)建集合
MogonDB刪除集合
- db.collection.drop()
返回值:刪除成功返回true寥掐,否則返回false - show collcetions 查看已存在的集合
MongoDB插入文檔
- 使用insert()或save()方法向集合中插入文檔
db.COLLECTION_NAME.insert(document).insert(document)
MongoDB更新文檔
- update()用于更新已經(jīng)存在的文檔
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
})
>db.col.update({'title':'MongoDB 教程'},{$set:{'title':'MongoDB'}})
- save() 方法通過傳入的文檔來替換已有文檔
db.collection.save(
<document>,
{
writeConcern: <document>
})
>db.col.save({
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一個 Nosql 數(shù)據(jù)庫",
"by" : "Runoob",
"url" : "http://www.runoob.com",
"tags" : [
"mongodb",
"NoSQL"
],
"likes" : 110})
MongoDB刪除文檔
- remove()函數(shù)是用來移除集合中的數(shù)據(jù)
- 語法:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
})
MongoDB查詢文檔
db.collection.find() 以非結(jié)構(gòu)化的方式來顯示所有文檔
db.collection.find().pretty() 以易讀的方式來讀取數(shù)據(jù)
db.collection.findOne() 只返回一個文檔
- MongoDB與RDBMS where語句比較
操作 | 格式 | 范例 | RDBMS中的類似語句 |
---|---|---|---|
等于 | {<key> :<value> } |
db.col.find({"by":"菜鳥教程"}).pretty() | where by = '菜鳥教程' |
小于 | {<key> :{$lt:<value> }} |
db.col.find({"likes":{$lt:50}}).pretty() | where likes < 50 |
小于或等于 | {<key> :{$lte:<value> }} |
db.col.find({"likes":{$lte:50}}).pretty() | where likes <= 50 |
大于 | {<key> :{$gt:<value> }} |
db.col.find({"likes":{$gt:50}}).pretty() | where likes > 50 |
大于或等于 | {<key> :{$gte:<value> }} |
db.col.find({"likes":{$gte:50}}).pretty() | where likes >= 50 |
不等于 | {<key> :{$ne:<value> }} |
db.col.find({"likes":{$ne:50}}).pretty() | where likes != 50 |
- MongoDB AND條件
>db.col.find({key1:value1, key2:value2}).pretty()
- MongoDB OR條件
>db.col.find({$or:[{"by":"菜鳥教程"},{"title": "MongoDB 教程"}]}).pretty()
- AND和OR聯(lián)合使用
>db.col.find({"likes": {$gt:50}, $or: [{"by": "someone"},{"title": "MongoDB 教程"}]}).pretty()
MongoDB條件操作符
符號 | 解釋 |
---|---|
$gt | 大于 |
$lt | 小于 |
$gte | 大于等于 |
$lte | 小于等于 |
MongoDB Limit與Skip方法
- limit() 在MongoDB中讀取指定數(shù)量的數(shù)據(jù)記錄
>db.COLLECTION_NAME.find().limit(NUMBER)
- skip() 來跳過指定數(shù)量的數(shù)據(jù)靴寂,接受一個數(shù)字參數(shù)作為跳過的記錄條數(shù),skip()方法默認參數(shù)為0
>db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)
MongoDB 排序
1.sort () 方法可以通過指定參數(shù)指定排序的字段召耘, 并使用 1
和 -1
來指定排序的方式百炬,其中 1 為升序
排序,-1 為降序
排序
2.語法:
>db.COLLECTION_NAME.find().sort({KEY:1})
MongoDB 索引
- 索引的作用:能夠極大的提高查詢的效率
- 創(chuàng)建索引:createIndex()
>db.collection.createIndex(keys, options)
說明:key值為要創(chuàng)建的索引字段污它,1為按升序創(chuàng)建索引剖踊,-1為按降序創(chuàng)建索引
MongoDB 聚合
- MongoDB中聚合(aggregate)主要用于處理數(shù)據(jù)(諸如統(tǒng)計平均值,求和)衫贬,并返回計算后的數(shù)據(jù)結(jié)果德澈。
- 語法:
>db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)
學習鏈接
官方文檔:https://docs.mongodb.com/
菜鳥教程:http://www.runoob.com/mongodb/mongodb-tutorial.html