基礎教程
http://www.runoob.com/mongodb/mongodb-tutorial.html
官方文檔
https://docs.mongodb.com/
SQL與MongoDB的映射關係
若是對關係型數據庫比較瞭解,下面的連接將對你很是有幫助
https://docs.mongodb.com/manual/reference/sql-comparison/
mac安裝
客戶端
robomongo https://robomongo.org/
鏈接mongodb
顯示全部數據庫
建立/切換數據庫
刪除數據庫
插入文檔
db.col.inset({"x":10})
db.col.save({"x":11})
刪除集合
查看全部集合
定義變量
document = {"y":123};
db.col.insert(document);
更新文檔
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
);
- query: update的查詢條件
- update: update的對象和一些更新的操做符
- upsert: 可選,若是不存在update的記錄,則插入,默認false
- multi: 可選,默認false,只更新找到的第一條記錄,true則更新找到的全部記錄
- writeConcern: 可選,拋出異常的級別
db.collection.save(
<document>,
{
writeConcern: <document>
}
);
- document: 文檔數據
- writeConcern: 可選,拋出異常的級別
- 若是不指定 _id 字段 save() 方法相似於 insert() 方法。若是指定 _id 字段,則會更新該 _id 的數據。
db.col.update({"x":10}, {"x":13}, {upsert:true, multi:true})
db.col.update({"x":10}, {$set: {"x":13}}, true, true)
db.col.save({"x": 10})
db.col.save({「_id」:」34fdfd343」})
刪除文檔
db.collection.remove(
<query>,
{
justOne: <boolean>,
writeConcern: <document>
}
)
db.col.remove({「x」: 13});
查詢文檔
db.col.find()
db.col.findOne()
db.col.find().pretty()
db.col.find({"x":12})
db.col.find({"x":{$eq:12}})
db.col.find({"x":{$lt:12}})
db.col.find({"x":{$lte:12}})
db.col.find({"x":{$gt:12}})
db.col.find({"x":{$gte:12}})
db.col.find({"x":{$ne:12}})
db.col.find({"x":12,"x」:{$ne:13}})
db.col.find({$or:[{"x":12},{"x":13}]})
$type操做符
$type操做符是基於BSON類型來檢索集合中匹配的數據類型,並返回結果
類型 |
數字 |
備註 |
Double |
1 |
|
String |
2 |
|
Object |
3 |
|
Array |
4 |
|
Binary data |
5 |
|
Undefined |
6 |
已廢棄。 |
Object id |
7 |
|
Boolean |
8 |
|
Date |
9 |
|
Null |
10 |
|
Regular Expression |
11 |
|
JavaScript |
13 |
|
Symbol |
14 |
|
JavaScript (with scope) |
15 |
|
32-bit integer |
16 |
|
Timestamp |
17 |
|
64-bit integer |
18 |
|
Min key |
255 |
Query with -1. |
Max key |
127 |
|
db.col.find({"x":{$type:2}})
limit與skip
db.col.find({"x":12}).limit(2)
db.col.find({"x":12}).skip(2)
sort排序
db.col.find().sort({"x":1})
db.col.find().sort({"x":-1})
index索引
# 建立索引
db.col.ensureIndex({"x」:1})
db.col.ensureIndex({"x":-1})
db.col.ensureIndex({"x":1, "y":-1})
Parameter |
Type |
Description |
background |
Boolean |
建索引過程會阻塞其它數據庫操做,background可指定之後臺方式建立索引,即增長 "background" 可選參數。 "background" 默認值爲false。 |
unique |
Boolean |
創建的索引是否惟一。指定爲true建立惟一索引。默認值爲false. |
name |
string |
索引的名稱。若是未指定,MongoDB的經過鏈接索引的字段名和排序順序生成一個索引名稱。 |
dropDups |
Boolean |
在創建惟一索引時是否刪除重複記錄,指定 true 建立惟一索引。默認值爲 false. |
sparse |
Boolean |
對文檔中不存在的字段數據不啓用索引;這個參數須要特別注意,若是設置爲true的話,在索引字段中不會查詢出不包含對應字段的文檔.。默認值爲 false. |
expireAfterSeconds |
integer |
指定一個以秒爲單位的數值,完成 TTL設定,設定集合的生存時間。 |
v |
index version |
索引的版本號。默認的索引版本取決於mongod建立索引時運行的版本。 |
weights |
document |
索引權重值,數值在 1 到 99,999 之間,表示該索引相對於其餘索引字段的得分權重。 |
default_language |
string |
對於文本索引,該參數決定了停用詞及詞幹和詞器的規則的列表。 默認爲英語 |
language_override |
string |
對於文本索引,該參數指定了包含在文檔中的字段名,語言覆蓋默認的language,默認值爲 language. |
db.col.ensureIndex({"x":1}, {background: true})
聚合
db.col.drop()
db.col.insert({
title: 'MongoDB Overview',
description: 'MongoDB is no sql database',
by_user: 'w3cschool.cc',
url: 'http://www.w3cschool.cc',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 100
})
title: 'NoSQL Overview',
description: 'No sql database is very fast',
by_user: 'w3cschool.cc',
url: 'http://www.w3cschool.cc',
tags: ['mongodb', 'database', 'NoSQL'],
likes: 10
})
title: 'Neo4j Overview',
description: 'Neo4j is no sql database',
by_user: 'Neo4j',
url: 'http://www.neo4j.com',
tags: ['neo4j', 'database', 'NoSQL'],
likes: 750
})
db.col.aggregate([{$group:{_id:"$by_user", num_tutorial:{$sum:1}}}])
表達式 |
描述 |
實例 |
$sum |
計算總和。 |
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : "$likes"}}}]) |
$avg |
計算平均值 |
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$avg : "$likes"}}}]) |
$min |
獲取集合中全部文檔對應值得最小值。 |
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$min : "$likes"}}}]) |
$max |
獲取集合中全部文檔對應值得最大值。 |
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$max : "$likes"}}}]) |
$push |
在結果文檔中插入值到一個數組中。 |
db.mycol.aggregate([{$group : {_id : "$by_user", url : {$push: "$url"}}}]) |
$addToSet |
在結果文檔中插入值到一個數組中,但不建立副本。 |
db.mycol.aggregate([{$group : {_id : "$by_user", url : {$addToSet : "$url"}}}]) |
$first |
根據資源文檔的排序獲取第一個文檔數據。 |
db.mycol.aggregate([{$group : {_id : "$by_user", first_url : {$first : "$url"}}}]) |
$last |
根據資源文檔的排序獲取最後一個文檔數據 |
db.mycol.aggregate([{$group : {_id : "$by_user", last_url : {$last : "$url"}}}]) |