一、數據庫操作
- 新建
use test
- 查看
db
或者:
show dbs
注意:數據庫中如果沒有數據,show dbs是不會展示數據的
插入一些數據:
db.test.insert({"name":"lizza"})
- 刪除
-- 查看有哪些庫
show dbs
-- 切換數據庫
use test1
-- 刪除數據庫
db.dropDatabase()
二、集合操作
- 創建集合
db.createCollection(name, options)
參數說明:
- name: 要創建的集合名稱
- options: 可選參數,指定有關內存大小及索引的選項
字段 | 類型 | 描述 |
---|---|---|
capped | 布爾 | (可選)如果爲 true,則創建固定集合。固定集合是指有着固定大小的集合,當達當該值爲 true 時,必須指定 size 參數。到最大值時,它會自動覆蓋最早的文檔。 |
autoIndexId | 布爾 | (可選)如爲 true,自動在 _id 字段創建索引。默認爲 false。 |
size | 數值 | (可選)爲固定集合指定一個最大值,以千字節計(KB)。如果 capped 爲 true,也需要指定該字段。 |
max | 數值 | (可選)指定固定集 |
示例:
use test
db.createCollection("user")
- 查看已有集合
show collections
注意:在MongoDB中不需要創建集合,當用戶插入一些文檔時,MongoDB會自動創建集合
- 刪除集合
語法:
db.collection_name.drop()
示例:
db.test.drop()
三、文檔操作
- 插入文檔
語法:
db.collection_name.insert(document)
示例:
db.test.insert({name: 'robert', sex: 'male', age: '18', tags: ['mongodb', 'database', 'NoSQL'], address: {ip: '0.0.0.0', name: '黑龍江佳木斯'}})
- 查看已插入的文檔
db.test.find()
- 插入一條
db.test.insertOne({a: 1})
- 插入多條
db.collection.insertMany({a: 1, b: 2})
- 更新文檔
語法
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,不插入
- mult:可選,mongodb 默認是false,只更新找到的第一條記錄,如果這個參數爲true,就把按條件查出來多條記錄全部更新
- writeConcern:可選,拋出異常的級別
示例:
db.test.update({name: 'lizza'}, {$set:{name: 'Lizza'}})
- 刪除文檔
語法:
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
參數說明:
- query:(可選)刪除的文檔的條件
- justOne :(可選)如果設爲 true 或 1,則只刪除一個文檔,如果不設置該參數,或使用默認值 false,則刪除所有匹配條件的文檔
- writeConcern:(可選)拋出異常的級別
示例:
db.test.remove({name: 'Lizza'})
- 查詢文檔
語法:
db.test.find(query, projection)
- query:可選,使用查詢操作符指定查詢條件
- projection:可選,使用投影操作符指定返回的鍵。查詢時返回文檔中所有鍵值, 只需省略該參數即可(默認省略)
- MongoDB與RDBMS Where語句比較
操作 | 格式 | 範例 | RDBMS中的類似語句 |
---|---|---|---|
等於 | { : } | db.col.find({“name” : “robert”}).pretty() | where name = ‘robert’ |
小於 | { : {$lt : }} | db.col.find({“age” : {$lt: 50}}).pretty() | where age < 50 |
小於或等於 | { : {$lte : }} | db.col.find({“age” : {$lte : 50}}).pretty() | where age <= 50 |
大於 | { : {$gt : }} | db.col.find({“age” : {$gt : 50}}).pretty() | where age > 50 |
大於或等於 | { : {$gte : }} | db.col.find({“age” : {$gte : 50}}).pretty() | where age >= 50 |
不等於 | { : {$ne : }} | db.col.find({“age” : {$ne:50}}).pretty() | where age != 50 |
- MongoDB AND條件
MongoDB的find()方法可以傳入多個鍵(key),每個鍵(key)以逗號隔開,即常規SQL的AND條件
語法格式如下:
db.test.find({key1:value1, key2:value2}).pretty()
- 示例:
db.test.find({name : 'robert', age : '18'}).pretty()
- MongoDB OR條件
MongoDB OR條件語句使用了關鍵字$or,語法格式如下:
db.test.find(
{
$or: [
{key1: value1}, {key2:value2}
]
}
).pretty()
示例:
db.test.find({$or : [{age : '15'}, {age : '18'}]}).pretty()
- 模糊查詢
-- 查詢name中包含r的
db.test.find({name : /r/})
-- 查詢name中以r開頭的
db.test.find({name : /^r/})
-- 查詢name中以r結尾的
db.test.find({name : /r$/})
- MongoDB $type 操作符
$type操作符是基於BSON類型來檢索集合中匹配的數據類型,並返回結果
類型 | 數字 | 備註 |
---|---|---|
Double | 1 | |
String | 2 | |
Object | 3 | |
Array | 4 | |
Binarydata | 5 | |
Undefined | 6 | 已廢棄。 |
Objectid | 7 | |
Boolean | 8 | |
Date | 9 | |
Null | 10 | |
RegularExpression | 11 | |
JavaScript | 13 | |
Symbol | 14 | |
JavaScript(withscope) | 15 | |
32-bitinteger | 16 | |
Timestamp | 17 | |
64-bitinteger | 18 | |
Minkey | 255 | Querywith-1. |
Maxkey | 127 |
示例:
-- 查詢所有結果集
db.test.find().pretty()
-- 查詢name類型爲string的數據
db.test.find({name : {$type : 2}})
db.test.find({title : {$type : 'string'}})
- Limit方法
如果需要在MongoDB中讀取指定數量的數據記錄,可以使用MongoDB的Limit方法,limit()方法接受一個數字參數,該參數指定從MongoDB中讀取的記錄條數
語法:
db.collection_name.find().limit(number)
- Skip方法
skip()方法用來跳過指定數量的數據,skip方法同樣接受一個數字參數作爲跳過的記錄條數
語法:
db.collection_name.find().limit(number).skip(number)
limit()和skip()方法組合使用可以實現分頁需求
- MongoDB排序(sort()方法)
在MongoDB中使用sort()方法對數據進行排序,sort()方法可以通過參數指定排序的字段,並使用1和-1來指定排序的方式,其中1爲升序排列,而-1是用於降序排列
語法:
db.collection_name.find().sort({key : 1})
示例:
db.test.find().sort({name : 1})