創(chuàng)建數(shù)據(jù)庫
# 語法
# 有就切換 沒有就創(chuàng)建
use DATABASE_NAME
打印數(shù)據(jù)庫列表
show dbs
** MongoDB 中默認(rèn)的數(shù)據(jù)庫為 test亚情,如果你沒有創(chuàng)建新的數(shù)據(jù)庫圈浇,集合將存放在 test 數(shù)據(jù)庫中粪牲。**
刪除數(shù)據(jù)庫
# 先切換到 要刪除的數(shù)據(jù)庫下
use test_chen
# 在刪除數(shù)據(jù)庫
db.dropDatabase()
<br />
<br />
打印集合列表
show collections
創(chuàng)建集合
** db.createCollection(name, options) **
在命令中, name 是要創(chuàng)建的集合的名稱. Options 是一個文件猎拨,用于指定配置的集合
參數(shù) | 類型 | 描述 |
---|---|---|
Name | String | 要創(chuàng)建的集合名稱 |
Options | Document | (可選)指定有關(guān)內(nèi)存大小和索引選項 |
選項??參數(shù)是可選的搁凸,所以只需要到指定的集合名稱葱轩。以下是可以使用的選項列表:
字段 | 類型 | 描述 |
---|---|---|
capped | Boolean | (可選)如果為true睦焕,則啟用封頂集合。封頂集合是固定大小的集合靴拱,會自動覆蓋最早的條目垃喊,當(dāng)它達(dá)到其最大大小。如果指定true袜炕,則需要也指定尺寸參數(shù)本谜。 |
autoIndexID | Boolean | (可選)如果為true,自動創(chuàng)建索引_id字段的默認(rèn)值是false妇蛀。 |
size | number | (可選)指定最大大小字節(jié)封頂集合耕突。如果封頂如果是 true,那么你還需要指定這個字段评架。 |
max | number | (可選)指定封頂集合允許在文件的最大數(shù)量眷茁。 |
當(dāng)插入文檔,MongoDB 第一檢查大小字段封頂集合纵诞,然后它會檢查最大的字段中上祈。
# 切換數(shù)據(jù)庫
use test_chen
# 創(chuàng)建集合(不帶參數(shù))
db.createCollection("mycollection")
# 創(chuàng)建集合(帶參數(shù))
db.createCollection("mycol", { capped : true, autoIndexID : true, size : 6142800, max : 10000 } )
# 插入數(shù)據(jù)的時候 如果不存在改集合 會自動創(chuàng)建 集合
db.yiibai.insert({"name" : "yiibai"})
如果 yiibai 集合不存在 則自動創(chuàng)建
刪除集合
# 語法
db.COLLECTION_NAME.drop()
# 刪除 名為yiibai的集合
db.yiibai.drop()
<br />
<br />
數(shù)據(jù)類型
String : 這是最常用的數(shù)據(jù)類型來存儲數(shù)據(jù)。在MongoDB中的字符串必須是有效的UTF-8。
Integer : 這種類型是用來存儲一個數(shù)值登刺。整數(shù)可以是32位或64位籽腕,這取決于您的服務(wù)器。
Boolean : 此類型用于存儲一個布爾值 (true/ false) 纸俭。
Double : 這種類型是用來存儲浮點值皇耗。
Min/ Max keys : 這種類型被用來對BSON元素的最低和最高值比較揍很。
Arrays : 使用此類型的數(shù)組或列表或多個值存儲到一個鍵郎楼。
Timestamp : 時間戳。這可以方便記錄時的文件已被修改或添加窒悔。
Object : 此數(shù)據(jù)類型用于嵌入式的文件呜袁。
Null : 這種類型是用來存儲一個Null值。
Symbol : 此數(shù)據(jù)類型用于字符串相同简珠,但它通常是保留給特定符號類型的語言使用阶界。
Date : 此數(shù)據(jù)類型用于存儲當(dāng)前日期或時間的UNIX時間格式×郑可以指定自己的日期和時間膘融,日期和年,月珍策,日到創(chuàng)建對象托启。
Object ID : 此數(shù)據(jù)類型用于存儲文檔的ID宅倒。
Binary data : 此數(shù)據(jù)類型用于存儲二進(jìn)制數(shù)據(jù)攘宙。
Code : 此數(shù)據(jù)類型用于存儲到文檔中的JavaScript代碼。
Regular expression : 此數(shù)據(jù)類型用于存儲正則表達(dá)式
<br />
<br />
查詢文檔
find() 方法
# 語法
db.COLLECTION_NAME.find()
# 例子
db.test_chen.find()
find() 方法將在非結(jié)構(gòu)化的方式顯示所有的文件拐迁。
pretty() 方法
結(jié)果顯示在一個格式化的方式蹭劈,可以使用 pretty() 方法.
# 語法
db.mycol.find().pretty()
#例子
db.mycol.find().pretty()
# 輸出
{
"_id": ObjectId(7df78ad8902c),
"title": "MongoDB Overview",
"description": "MongoDB is no sql database",
"by": "tutorials yiibai",
"url": "http://www.yiibai.com",
"tags": ["mongodb", "database", "NoSQL"],
"likes": "100"
}
除了 find() 方法之外,還有一個 findOne() 方法线召,它只返回一個文檔铺韧。
RDBMS Where子句和MongoDB等同語句
|操作 | 語法| 例子| RDBMS 等同|
|:-----:|:-----:|:-----:|
|Equality| {<key>:<value>} |db.mycol.find({"by":"tutorials yiibai"}).pretty() |where by = 'tutorials yiibai'|
|Less Than |{<key>:{$lt:<value>}} |db.mycol.find({"likes":{$lt:50}}).pretty() |where likes < 50|
|Less Than Equals |{<key>:{$lte:<value>}}| db.mycol.find({"likes":{$lte:50}}).pretty() |where likes <= 50|
|Greater Than |{<key>:{$gt:<value>}} |db.mycol.find({"likes":{$gt:50}}).pretty() |where likes > 50|
|Greater Than Equals | {<key>:{$gte:<value>}} | db.mycol.find({"likes":{$gte:50}}).pretty() |where likes >= 50|
|Not Equals |{<key>:{$ne:<value>}} | db.mycol.find({"likes":{$ne:50}}).pretty() |where likes != 50|
AND 在MongoDB中用法
在 find() 方法,如果通過多個鍵分離','缓淹,那么 MongoDB 處理 AND 條件哈打。AND 基本語法如下所示:
# 語法
db.mycol.find({key1:value1, key2:value2}).pretty()
# 例子
# 下面給出的例子將顯示所有的教程,標(biāo)題是“MongoDB Overview“
db.mycol.find({"by":"tutorials yiibai","title": "MongoDB Overview"}).pretty()
# 對于上面給出的例子相當(dāng)于where子句 ' where by='yiibai' AND title='MongoDB Overview' 讯壶, 可以通過任意數(shù)量的鍵值對在 find 子句料仗。
MongoDB中OR
OR條件的基礎(chǔ)上要查詢文件,需要使用$or關(guān)鍵字伏蚊。OR 基本語法如下所示:
# 語法
db.mycol.find(
{
$or: [
{key1: value1},
{key2:value2}
]
}
).pretty()
# 例子
db.mycol.find({
$or:[
{"by":"yiibai"},
{"title": "MongoDB Overview"}
]
}).pretty()
AND 和 OR 一起使用
下面給出的例子將顯示有像的文件大于100立轧,其標(biāo)題是“MongoDB Overview'或者是'yiibai' 。
等效于 SQL where子句 為 'where likes>10 AND (by = 'yiibai' OR title = 'MongoDB Overview')'
db.mycol.find({
"likes": {$gt:10},
$or: [
{"by": "yiibai"},
{"title": "MongoDB Overview"}
]
}).pretty()
<br />
<br />
插入文檔
要插入數(shù)據(jù)到 MongoDB 集合,需要使用 MongoDB 的 insert() 或 save() 方法氛改。
insert() 方法
# 語法
db.COLLECTION_NAME.insert(document)
# 例子
db.test_one.insert({
title: 'test',
description: 'testestest',
by: 'chenxiaomo',
url: 'http://www.baidu.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
# 插入多條
db.post.insert([
{
title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
by: 'tutorials yiibai',
url: 'http://www.yiibai.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
},
{
title: 'NoSQL Database',
description: 'NoSQL database doesn't have tables',
by: 'tutorials yiibai',
url: 'http://www.yiibai.com',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 20,
comments: [
{
user:'user1',
message: 'My first comment',
dateCreated: new Date(2013,11,10,2,35),
like: 0
}
]
}
])
# save 方法同上
<br />
<br />
更新文檔
MongoDB的 update() 和 save() 方法用于更新文檔的集合帐萎。
update()方法更新現(xiàn)有的文檔值,而替換現(xiàn)有的文檔通過的文件中 save() 方法胜卤。
update()方法
更新符合條件的文檔
# 語法
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
參數(shù)說明:
- **query **: update的查詢條件疆导,類似sql update查詢內(nèi)where后面的。
- **update **: update的對象和一些更新的操作符(如$,$inc...)等葛躏,也可以理解為sql update查詢內(nèi)set后面的
- **upsert ** : 可選是鬼,這個參數(shù)的意思是,如果不存在update的記錄紫新,是否插入objNew,true為插入均蜜,默認(rèn)是false,不插入芒率。
- **multi ** : 可選囤耳,mongodb 默認(rèn)是false,只更新找到的第一條記錄,如果這個參數(shù)為true,就把按條件查出來多條記錄全部更新偶芍。
- **writeConcern ** :可選充择,拋出異常的級別。
Save() 方法
替換符合條件的文檔
# 語法
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
# 例子
db.mycol.save(
{
"_id" : ObjectId(5983548781331adf45ec7),
"title":"Yiibai New Topic",
"by":"Yiibai"
}
)
更多實例
# 只更新第一條記錄:
db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
# 全部更新:
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
# 只添加第一條:
db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
# 全部添加加進(jìn)去:
db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
# 全部更新:
db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
# 只更新第一條記錄:
db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
<br />
<br />
刪除文檔
remove() 方法
# 語法
db.collection.remove(
<query>,
<justOne>
)
# 2.6 后的語法
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
參數(shù)說明:
- **query **:(可選)刪除的文檔的條件匪蟀。
- **justOne **: (可選)如果設(shè)為 true 或 1椎麦,則只刪除一個文檔。
- **writeConcern ** :(可選)拋出異常的級別材彪。
# 刪除指定條件的
db.col.remove({'title':'MongoDB 教程'})
# 刪除指定條件的 并且 指定刪除條數(shù)
db.col.remove({'title':'MongoDB 教程'}, 2)
# 刪除全部的
db.col.remove({})
<br />
<br />