mongodb 學習筆記

 
基礎教程
 
http://www.runoob.com/mongodb/mongodb-tutorial.html
 
官方文檔
 
https://docs.mongodb.com/
 
SQL與MongoDB的映射關係
 
若是對關係型數據庫比較瞭解,下面的連接將對你很是有幫助
 
https://docs.mongodb.com/manual/reference/sql-comparison/
 
mac安裝
 
brew install mongodb
 
客戶端
 
robomongo https://robomongo.org/
 
鏈接mongodb
 
mongo
 
顯示全部數據庫
 
show dbs
 
建立/切換數據庫
 
use test
 
刪除數據庫
 
db.dropDatabase()
 
插入文檔
 
db.col.inset({"x":10})
db.col.save({"x":11})
 
刪除集合
 
db.col.drop()
 
查看全部集合
 
show collections
 
定義變量
 
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
})
db.col.insert({
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
})
db.col.insert({
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"}}}])
相關文章
相關標籤/搜索