Database 啟動指令 Mysql 和 Mongodb (附有mongo筆記
【Mysql】
啟動server
sudo mysql.server start
sudo mysql.server stop
sudo mysql.server restart
進入指令 mysql
【Mongodb】
啟動server
mongod
進入指令 mongo
如果要close server
use admin
db.shutdownServer()
use mydb (新建資料庫)
db.myCollection.find() (新建資料表,但在mongo中table等於collection)
新增 insert() 查詢 find() 更新update() 刪除remove()
-------------------MongoDB 筆記-------------------
在node裡,使用mongodb會有兩種模組,一種mongo,另一種mongoose
兩種的CRUD都有放置在github上面了
https://github.com/tony801015/MongoDB_practice
※在mongoose中內部創建collection時,命名上如果都為小寫(tonyuser),而最後一個字母沒有--s,則會自動在後面加上--s(tonyusers)作為最後的命名,你也可以透過mongo進入指令查詢,輸入show collections,即可看到所有的collection。
排序 db.collection.find().sort('key':1) 1 --> 遞增 -1 --> 遞減
分頁 db.collection.find().limit(2).skip(2) //每頁限2筆 略過2筆
投影 db.collection.find({},{"_id":0,"name":1}) // 0 不要顯示 1 要顯示
--------------------------------------------------------------------------------
實作經驗1: yoyo的collection
$mul 乘 , $unset 刪除key , $inc 加 , $max/$min 比大小 , $setOnInsert 用update新增資料
db.getCollection('yoyo').update(
// query
{
},
// update
{
$mul:{score:2}
},
// options
{
"multi" : false, // update only one document
"upsert" : false // insert a new documemt, if no existing document match the query
}
);
實作經驗2:轉換型態從double到整數 (ex:10.0 --> 10)
//update double to NumberInt (int32) type
db.getCollection('yoyo').find({ 'number' : {$exists : true}}).forEach( function(obj) {
obj.number = NumberInt( obj.number );
db.getCollection('yoyo').save(obj); } );
實作經驗3:找到非類似,像是mysql的not like
db.getCollection('yoyo').find({ $nor:[{message:/#/}]})
--------------------------------------------------------------------------------
Embedded documents 內嵌文件,簡單來說就是物件{ } 裡面放 陣列[ ]
example:
db.yoyo.insert({
"id":"yoyo1",
"name":[
"id":"yoyo2",
"name":[
這樣的情況我們稱為內嵌文件,以下是遇到內嵌文件的查詢方式與技巧
db.yoyo.find({"name.1.school":"yy"}) // 顯示第二個元素是yy
db.yoyo.find({"name":{$size:2}}) // 顯示name陣列中有兩筆資料的id (yoyo和yoyo2都會被顯示出來
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
啟動server
sudo mysql.server start
sudo mysql.server stop
sudo mysql.server restart
進入指令 mysql
【Mongodb】
啟動server
mongod
進入指令 mongo
如果要close server
use admin
db.shutdownServer()
use mydb (新建資料庫)
db.myCollection.find() (新建資料表,但在mongo中table等於collection)
新增 insert() 查詢 find() 更新update() 刪除remove()
-------------------MongoDB 筆記-------------------
在node裡,使用mongodb會有兩種模組,一種mongo,另一種mongoose
兩種的CRUD都有放置在github上面了
https://github.com/tony801015/MongoDB_practice
※在mongoose中內部創建collection時,命名上如果都為小寫(tonyuser),而最後一個字母沒有--s,則會自動在後面加上--s(tonyusers)作為最後的命名,你也可以透過mongo進入指令查詢,輸入show collections,即可看到所有的collection。
排序 db.collection.find().sort('key':1) 1 --> 遞增 -1 --> 遞減
分頁 db.collection.find().limit(2).skip(2) //每頁限2筆 略過2筆
投影 db.collection.find({},{"_id":0,"name":1}) // 0 不要顯示 1 要顯示
--------------------------------------------------------------------------------
實作經驗1: yoyo的collection
$mul 乘 , $unset 刪除key , $inc 加 , $max/$min 比大小 , $setOnInsert 用update新增資料
db.getCollection('yoyo').update(
// query
{
},
// update
{
$mul:{score:2}
},
// options
{
"multi" : false, // update only one document
"upsert" : false // insert a new documemt, if no existing document match the query
}
);
實作經驗2:轉換型態從double到整數 (ex:10.0 --> 10)
//update double to NumberInt (int32) type
db.getCollection('yoyo').find({ 'number' : {$exists : true}}).forEach( function(obj) {
obj.number = NumberInt( obj.number );
db.getCollection('yoyo').save(obj); } );
實作經驗3:找到非類似,像是mysql的not like
db.getCollection('yoyo').find({ $nor:[{message:/#/}]})
--------------------------------------------------------------------------------
Embedded documents 內嵌文件,簡單來說就是物件{ } 裡面放 陣列[ ]
example:
db.yoyo.insert({
"id":"yoyo1",
"name":[
{
"school":"yy1",
"address":"mars",
"stu_number":55
},
{
"school":"yy",
"address":"Earth",
"stu_number":87
}
]
},{]
"id":"yoyo2",
"name":[
{
"school":"yy",
"address":"mars",
"stu_number":55
},
{
"school":"yy2",
"address":"Earth",
"stu_number":87
}
]
})]
這樣的情況我們稱為內嵌文件,以下是遇到內嵌文件的查詢方式與技巧
db.yoyo.find({"name.1.school":"yy"}) // 顯示第二個元素是yy
db.yoyo.find({"name":{$size:2}}) // 顯示name陣列中有兩筆資料的id (yoyo和yoyo2都會被顯示出來
--------------------------------------------------------------------------------
索引
db.collection.ensureIndex()
給索引使mongodb在做查詢的時候,可以依據索引做查詢
我們也可以透過explain()查看他是依據什麼方式做查詢
到官網有更詳細的解說
Model Tree Structures
顧名思義就是以樹的結構作為模組,這在官網中有提到五種方式,也有舉非常好的例子
1.Parent References
2.Child References
3.an Array of Ancestors
4.Materialized Paths
5.Nested Sets
留言
張貼留言