最近在用在node上用mongoose,但是官網(wǎng)上的文檔全是英文看!不!懂!,而且找個東西太費勁了,寫下這篇作為筆記,以后忘了也可以來查,本文章對沒接觸過的人還是有些幫助的
安裝
MongoDB
安裝需要注冊賬號,登錄后下載的時候略卡,耐心等等就能下了.我下的是Windows Server 2008 R2 and later, with SSL support3.2.6這個版本
本地安裝之后找到你下載的目錄,有個bin文件,在旁邊新建一個文件夾,名字隨意起,我的是db
以后經(jīng)常會用到起一個簡潔一點的,這個是放數(shù)據(jù)的文件夾
開始
回車之后會提示你已經(jīng)連接到27017端口了,這個黑屏不關(guān),服務(wù)會一直開啟著,
客戶端
說mongoose之前先說另一個事,mongodb不像mysql等數(shù)據(jù)庫那樣會有可視化的管理器,
這樣會開啟一個黑屏管理器。。
正常會之后一個local,如果你想創(chuàng)建一個數(shù)據(jù)庫不需要顯示的創(chuàng)建,use dong,如果有dong這個名字就會進(jìn)入到這個數(shù)據(jù)庫,如果沒有會自動創(chuàng)建,并且進(jìn)入這個數(shù)據(jù)庫.
show dbs : 顯示所有的數(shù)據(jù)庫
use dong:進(jìn)去dong數(shù)據(jù)庫
show collections:顯示所有表
db.users.find() :顯示users表里所有的數(shù)據(jù)
這里只介紹基本的,更詳細(xì)的請去這里
mongoose
mongoose這個文檔不適合初級學(xué)員..網(wǎng)上有很多更簡單的可以看看 這個或者菜鳥教程
這是我的目錄
db.js:存放連接數(shù)據(jù)庫
opeUser :存放操作用戶的方法
Schema下的user相當(dāng)于一個 Class,定義一些User的屬性和方法
我忘了在哪抄的模板了,反正能用
[這個] 連接里存放了基本的數(shù)據(jù)模型等等的信息
如果是個對象,直接一個{}就可以了... 下面這個圖里hearts數(shù)組里可以放_id,每個數(shù)據(jù)都自動生成一個這個屬性(唯一的),
arrOfObjectId:[Schema.Types.ObjectId]
增刪改查
增加
這里有個坑,我不記得以前在哪看的把 var user = new User()放在外面,你創(chuàng)建一個新用戶如果是無刷新提交的,再創(chuàng)建一個新用戶的話里面的_id會是第一個的_id,這樣會把你第一個用戶頂?shù)?血的教訓(xùn)...
save接收一個方法,參數(shù)是錯誤和結(jié)果,這邊我改了下別人寫的,我這么寫一眼就能看懂了,callback接收的第一個參數(shù)是這次操作成功了還是失敗了,第二個參數(shù)如果成功了返回結(jié)果,失敗了返回錯誤信息,一目了然好吧..
這個保存的是user上掛著的屬性
這是路由器調(diào)用的圖,一目了然~~~
還有個create方法,也是增加的方法,我沒用過就不說了
查詢
findById
findOne
find
接收的第一個參數(shù)是規(guī)則,就是你要找什么數(shù)據(jù),byid只能給_id,one可以接收任意規(guī)則,并且找到匹配的第一個就返回,它們返回的都是一條記錄,規(guī)則是一個對象{},{name:'abc',age:19},找一個叫abc十九歲的數(shù)據(jù)
可以鏈?zhǔn)綄?這句的意思是找data規(guī)則的根據(jù)創(chuàng)建時間倒序的五條記錄
這句是找創(chuàng)建時間大于xxx的根據(jù)創(chuàng)建時間正序排列的最多五個數(shù)據(jù),多了不行少可以.(gte 大于等于 lt小于 lte小于等于)
舉例這個data是titles這個屬性,這句的意思是找所有不重復(fù)的titles
修改和刪除
我還沒看呢...
刪除_id為xxx的hearts數(shù)組里data.userId這個數(shù)據(jù)
在_id為data.blogId這個記錄中的hearts數(shù)組里添加data.userId這個數(shù)據(jù)
今天先到這...
cd program files === cd progra~1
Person. find({ occupation: /host/, 'name.last': 'Ghost', age: { $gt: 17, $lt: 66 }, likes: { $in: ['vaporizing', 'talking'] } }). limit(10). sort({ occupation: -1 }). select({ name: 1, occupation: 1 }). exec(callback);
windows下偶爾會在啟動的時候報
api-ms-win-crt-runtime-l1-1-0.dll丟失
去 這里下載這個東西就好了 網(wǎng)上查的 親測有效