標籤

BAT (38) shell (34) Virtual Machine (33) Xubuntu (29) acfs (25) PHP (24) CentOS (21) Virtul Box (20) 編輯器 (17) 資料庫 (15) lubuntu (13) windows (13) CPP (12) ubuntu (12) chrome (11) laravel (10) Docker (9) Python (9) 5A88 (7) VMware (6) 資料結構 (6) Javascript (5) Node (5) Proxmox VE (5) 公告系統 (5) 程式積木 (5) Android Studio (4) ANN (3) OB2D2016x64 (3) Xoops (3) clonezilla (3) samba (3) 公文 (3) 其他 (3) 硬體 (3) API (2) Android (2) AppInvent2 (2) Html (2) Hyper-V (2) Nas (2) botnet (2) mbot (2) swift (2) wordpress (2) 樣板 (2) 防火牆 (2) AD的應用 (1) Ansible (1) Arduino (1) CSS (1) GitLab (1) HA Proxy (1) LegoEV3 (1) PowerShell (1) Scratch (1) VM (1) XenServer (1) kotlin (1) linuxmint (1) lxc (1)

2020年6月5日 星期五

MongoDB入門_筆記與學習心得

自從學了Node.js入門。發現Node.js需要跟MongoDB搭配,深深覺得MongoDB是下一個學習的重心。因此將所學的內容整理。

1.基本觀念:

MongoDB                      VS                  關聯式資料庫(MySQL)
database                         <->                        database
collection                       <->                        table
document                       <->                        record

*不同的地方:資料長度可不同

2.使用方法
(1).建立 database:Blog
(2).建立 collection:Posts,Categories,Tags
(3).建立 document:Post:{"_id":"","title":""}

Blog
  Posts
     {"_id":1,"title":"Posts title01"}
     {"_id":2,"title":"Posts title02"}
     {"_id":3,"title":"Posts title03","delfg":1}
 Categories
     {"_id":1,"title":"Categories title01"}
     {"_id":2,"title":"Categories title02"}
Tags
     {"_id":1,"title":"Tags title01"}
     {"_id":2,"title":"Tags title02"}
     {"_id":3,"title":"Tags title03"}

2.指令:

操作實例:
$mongo
> help

> exit
$mongo
>show dbs;
>use Blog
>db.createCollection("Posts")
>db.createCollection("Categories")
>db.createCollection("Tags")
>show collections
>show dbs

>db.stats()
>db.dropDatabase()
>show dbs

3.Collection 實作

操作實例:
$mongo
>show dbs
>use Blog
>show collections
>db.createCollection("Posts")
>show collections
>db.Posts.renameCollection("Tags")
>show collections
>db.Tags.drop()
>show collections
>db.dropDataBase()
>show dbs

4.Document實作

操作實例:
mongo
>show dbs
>use Blog
>show collections
>db.createCollection("Posts")
>db.Posts.insert({
  title:"Posts title01",
  content:"Posts content01"
})
>show collections
>db.Posts.find()
>db.Posts.insert({
  title:"Posts title02",
  content:"Posts content02",
  tag:["Posts tag02"]
})
>db.Posts.find()
>for(var i = 3;i<=10;i++){
   db.Posts.insert(
      title:"Posts title0"+i
      content:"Posts content0"+i
   );
}
>db.Posts.find()
>db.Posts.count()
>db.Posts.remove({})
>db.Posts.count()

>db.Posts.find()

5.限制條件的文檔db.find

觀念:
db.[collection_name].find({"":""})
$gte 大於等於 >=
$gt 大於 >
$eq 等於 =
$ne 不等於
正規表示法:/k/,/^k/
/k/   :帶有k的
/^k/ :不帶有k的
db.[collection_name].distinct("field_name")

操作實例:
mongo
>use Blog
>db.Posts.remove({})
>db.Posts.insert({title:Posts title01,"rank":2,"tag":"game"})
>db.Posts.insert({title:Posts title02,"rank":1,"tag":"game"})
>db.Posts.insert({title:Posts title03,"rank":3,"tag":"it"})
>db.Posts.insert({title:Posts title04,"rank":4,"tag":"game"})
>db.Posts.insert({title:Posts title05,"rank":7,"tag":"it"})
>db.Posts.insert({title:Posts title06,"rank":4,"tag":"game"})
>db.Posts.find({"tag":"game"})
>db.Posts.find({"rank":{$gte:4}})
>db.Posts.find({"rank":{$gt:4}})
>db.Posts.find({"rank":{$lte:4}})
>db.Posts.find({"rank":{$lt:4}})
>db.Posts.find({"title":/Posts/})
>db.Posts.distinct("tag")

6.複雜條件:

觀念:
db.[collection_name].find({"":"","":""})
進行多個條件
db.[collection_name].find({$or:[{...},{...}]})
進行多個條件、[or]、[and]運算
db.[collection_name].find({"":{$in:[...]}})
進行關聯式資料庫的select_in
db.[collection_name].find({"":{$exists:true}})
進行[存在]就列出

操作實例:
$mongo
>use Blog
>db.Posts.find()
>db.Posts.insert({"title":"Posts title09 u","istop":true})
>db.Posts.find({"title":/u/})
>db.Posts.find({$or:[{"title":/u/},{"rank":{$gte:4}}]})
>db.Posts.find({"rank":{$in:[3,4]}})
>db.Posts.insert({"title":"Posts title08","istop":true})
>db.Posts.find({"istop":{$exists:true}})



7.列出指定條件下的document

 觀念:
db.[collection_name].find({},{field1:true,field2:1})
列出field1是真的,field2:是的文檔


操作實例:
$mongo
>use Blog
>db.Posts.find()
>db.Posts.find({},{title:true,rank:1})
>db.Posts.find({},{title:true,rank:1,_id:0})

  隱藏_id 


8.document 的方法 sort limit skip

  觀念:
sort()

document的排序
limit() ex:limit(5)

document的限制列出 ex: 列出5個document
 skip() ex:skjh(5)
document的跳過列出 ex跳過5個document
操作實例:
$mongo
>use Blog
>db.Posts.find()
>db.Posts.find({},{_id:0}).sort({rank:1})

rank:1 升冪排序
 >db.Posts.find({},{_id:0}).sort({rank:-1})
rank:-1 降冪排序
>db.Posts.find({},{_id:0}).limit(3)
預設排序,前三個document
>db.Posts.find({},{_id:0}).sort({rank:-1}).limit(3)
>db.Posts.findOne({},{_id:0})

只要第一條document
>db.Posts.find({},{_id:0})
>db.Posts.find({},{_id:0}).limit(3)
>db.Posts.find({},{_id:0}).skip(3).limit(3)

  9.document的更新update

觀念:
update(<filter>,<update>,<options>)

操作實例:
$mongo
>use Blog
>db.Posts.findOne({title:"Posts title01"})
>db.Posts.update({title:"Posts title01"},{set:{"rank":10}})
>db.Posts.find()
資料來源:
1.MongoDB入門
2.DB-Engines Ranking
3.MongoDB學習
4.MongoDB官網
5.30天之你好MongoDB 系列


沒有留言:

張貼留言

在 Windows 10 x64 1909版,使用BAT快速安裝公文系統與人事服務網(自然人憑證)版

相關內容移往 https://skjhcreator.blogspot.com/2021/02/windows-10-x64-1909bat.html