創建數據庫
# 語法
# 有就切換 沒有就創建
use DATABASE_NAME
打印數據庫列表
show dbs
** MongoDB 中默認的數據庫為 test,如果你沒有創建新的數據庫,集合將存放在 test 數據庫中。**
刪除數據庫
# 先切換到 要刪除的數據庫下
use test_chen
# 在刪除數據庫
db.dropDatabase()
<br />
<br />
打印集合列表
show collections
創建集合
** db.createCollection(name, options) **
在命令中, name 是要創建的集合的名稱. Options 是一個文件,用于指定配置的集合
參數 | 類型 | 描述 |
---|---|---|
Name | String | 要創建的集合名稱 |
Options | Document | (可選)指定有關內存大小和索引選項 |
選項??參數是可選的,所以只需要到指定的集合名稱。以下是可以使用的選項列表:
字段 | 類型 | 描述 |
---|---|---|
capped | Boolean | (可選)如果為true,則啟用封頂集合。封頂集合是固定大小的集合,會自動覆蓋最早的條目,當它達到其最大大小。如果指定true,則需要也指定尺寸參數。 |
autoIndexID | Boolean | (可選)如果為true,自動創建索引_id字段的默認值是false。 |
size | number | (可選)指定最大大小字節封頂集合。如果封頂如果是 true,那么你還需要指定這個字段。 |
max | number | (可選)指定封頂集合允許在文件的最大數量。 |
當插入文檔,MongoDB 第一檢查大小字段封頂集合,然后它會檢查最大的字段中。
# 切換數據庫
use test_chen
# 創建集合(不帶參數)
db.createCollection("mycollection")
# 創建集合(帶參數)
db.createCollection("mycol", { capped : true, autoIndexID : true, size : 6142800, max : 10000 } )
# 插入數據的時候 如果不存在改集合 會自動創建 集合
db.yiibai.insert({"name" : "yiibai"})
如果 yiibai 集合不存在 則自動創建
刪除集合
# 語法
db.COLLECTION_NAME.drop()
# 刪除 名為yiibai的集合
db.yiibai.drop()
<br />
<br />
數據類型
String : 這是最常用的數據類型來存儲數據。在MongoDB中的字符串必須是有效的UTF-8。
Integer : 這種類型是用來存儲一個數值。整數可以是32位或64位,這取決于您的服務器。
Boolean : 此類型用于存儲一個布爾值 (true/ false) 。
Double : 這種類型是用來存儲浮點值。
Min/ Max keys : 這種類型被用來對BSON元素的最低和最高值比較。
Arrays : 使用此類型的數組或列表或多個值存儲到一個鍵。
Timestamp : 時間戳。這可以方便記錄時的文件已被修改或添加。
Object : 此數據類型用于嵌入式的文件。
Null : 這種類型是用來存儲一個Null值。
Symbol : 此數據類型用于字符串相同,但它通常是保留給特定符號類型的語言使用。
Date : 此數據類型用于存儲當前日期或時間的UNIX時間格式。可以指定自己的日期和時間,日期和年,月,日到創建對象。
Object ID : 此數據類型用于存儲文檔的ID。
Binary data : 此數據類型用于存儲二進制數據。
Code : 此數據類型用于存儲到文檔中的JavaScript代碼。
Regular expression : 此數據類型用于存儲正則表達式
<br />
<br />
查詢文檔
find() 方法
# 語法
db.COLLECTION_NAME.find()
# 例子
db.test_chen.find()
find() 方法將在非結構化的方式顯示所有的文件。
pretty() 方法
結果顯示在一個格式化的方式,可以使用 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()
# 例子
# 下面給出的例子將顯示所有的教程,標題是“MongoDB Overview“
db.mycol.find({"by":"tutorials yiibai","title": "MongoDB Overview"}).pretty()
# 對于上面給出的例子相當于where子句 ' where by='yiibai' AND title='MongoDB Overview' , 可以通過任意數量的鍵值對在 find 子句。
MongoDB中OR
OR條件的基礎上要查詢文件,需要使用$or關鍵字。OR 基本語法如下所示:
# 語法
db.mycol.find(
{
$or: [
{key1: value1},
{key2:value2}
]
}
).pretty()
# 例子
db.mycol.find({
$or:[
{"by":"yiibai"},
{"title": "MongoDB Overview"}
]
}).pretty()
AND 和 OR 一起使用
下面給出的例子將顯示有像的文件大于100,其標題是“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 />
插入文檔
要插入數據到 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()方法更新現有的文檔值,而替換現有的文檔通過的文件中 save() 方法。
update()方法
更新符合條件的文檔
# 語法
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
參數說明:
- **query **: update的查詢條件,類似sql update查詢內where后面的。
- **update **: update的對象和一些更新的操作符(如$,$inc...)等,也可以理解為sql update查詢內set后面的
- **upsert ** : 可選,這個參數的意思是,如果不存在update的記錄,是否插入objNew,true為插入,默認是false,不插入。
- **multi ** : 可選,mongodb 默認是false,只更新找到的第一條記錄,如果這個參數為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 );
# 全部添加加進去:
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>
}
)
參數說明:
- **query **:(可選)刪除的文檔的條件。
- **justOne **: (可選)如果設為 true 或 1,則只刪除一個文檔。
- **writeConcern ** :(可選)拋出異常的級別。
# 刪除指定條件的
db.col.remove({'title':'MongoDB 教程'})
# 刪除指定條件的 并且 指定刪除條數
db.col.remove({'title':'MongoDB 教程'}, 2)
# 刪除全部的
db.col.remove({})
<br />
<br />