# MongoDB https://www.youtube.com/watch?v=-bt_y4Loofg https://tw.alphacamp.co/blog/mysql-and-mongodb-comparison 忘了可以進去看 他下面有備忘錄連結 https://www.youtube.com/watch?v=ofme2o29ngU ## 介紹 no-sql 他沒有資料表那樣 原因是當你沒有這個collection會自動創造 他沒有甚麼子查詢 因為他可以嵌套 ## shell(要額外安裝) 你可以看到你輸入**mongo**他會顯示test ![](https://i.imgur.com/pCLLUMN.png) 因為預設的資料庫就叫test(實際不存在 除非你有建立資料) 當你use某一個就資料庫就不會有這個了 mongo是進入sell可以操作db 但當你要離開要用exit ## show dbs ![](https://i.imgur.com/VlHPaax.png) 會顯示 admin config local 三個資料庫 ## 使用資料庫 use 某一個 ex use admin ## 建立資料庫 use 不存在的名稱 但其實沒有真的建立 記得前面說的嗎 就像test一樣 只有當你裡面有資料才會建立 不信你用show dbs看看 ## 刪除資料庫 db.dropDatabase() 這邊很多寫法都跟js很像 因為他底層就是node ## collection 這等於MySql的資料表 ## show collections 查看全部的資料表那種感覺 ## collection ### 放入collection db.users.insertOne({ name:"john" }) 基本上都是db開頭 因為你在進來資料庫了 第二是集合 你可以當成資料表 一樣加s 第三語法你看dropDatabase一樣 這是function 駝峰方式 前面是sql動作 後面是對誰 function參數是 json格式 ![](https://i.imgur.com/QxqFfrd.png) 第一個是true代表有成功 第二是quene 的id ### 當然可以多個array 用 db.users.insertMany ### find() 這等於all抓取全部 ![](https://i.imgur.com/4wa3bTT.png) 後面可以做sort liment之類的 就是collection能做的那種感覺 #### find.sort排序 ![](https://i.imgur.com/cdWrnWu.png) 傳入物件 key是要搜尋的 value 有 1跟 -1(相反) ### where find裡面除了物件就是搜尋 1.-1是排序 ![](https://i.imgur.com/euvgZDS.png) ### where 限定返回的欄位 ![](https://i.imgur.com/en51CLT.png) 要返回的欄位寫 1 不要返回的欄位寫0 對了如果是id 要加上_喔 #### where複雜查詢 ##### $eq 找相符合的 ![](https://i.imgur.com/IQtwYl4.png) 找相符合的 ##### $ne 找不符合的 ![](https://i.imgur.com/loTj8WX.png) ##### $gt 大於 ![](https://i.imgur.com/Gyt3MRM.png) ##### $in whereIn ![](https://i.imgur.com/EnLTdTZ.png) ##### $nit notWhereIn ![](https://i.imgur.com/iFW0JBo.png) ##### $gte 大於等於 ##### $exist ![](https://i.imgur.com/WtWmywW.png) 注意null也會返回喔 ##### $lte 小於 ![](https://i.imgur.com/owfFVGm.png) ##### $or 或 ![](https://i.imgur.com/UHDW9oA.png) ##### $expr 比較同一個資料的兩個欄位 `$expr:{$ge:['$debt','$balance'] }` 記得如果是欄位 要加上$字號 ![](https://i.imgur.com/OEWWyDk.png) ### countDocuments 數量 ![](https://i.imgur.com/tfOhAqE.png) ### update 跟find一樣 但要改變的結果要加上$set ![](https://i.imgur.com/J8EtzIp.png) #### $inc 流水號那個 自動增加數字 ![](https://i.imgur.com/CVma0LT.png) #### $rename 重新命名 ![](https://i.imgur.com/ynrQmZY.png) #### $unset 刪除欄位 ![](https://i.imgur.com/VyN0mvr.png) #### $push 如果屬性是array可以增加 ![](https://i.imgur.com/1Kef25U.png) #### $pull 跟 push相反 是把東西拉出來 等於刪掉 ![](https://i.imgur.com/geGVXBL.png) ### updateMany 大量更新 ![](https://i.imgur.com/RxPxmlP.png) ### deleteOne ![](https://i.imgur.com/ZuhXEio.png) ### replaceOne 替換一個 ![](https://i.imgur.com/EgZoaUI.png) 注意這替換是整個object喔 基本用不到 ###### tags: `NoSql`