1. 程式人生 > 其它 >mongodb使用與整合MongoDB到Express框架中

mongodb使用與整合MongoDB到Express框架中

1、資料庫啟動以及常見問題解決
直接執行mongo命令,不會進入mongo控制檯,那麼需要重新開啟一個cmd命令執行mongod命令,來啟動mongodb服務,不能停止這個服務
2、資料庫分類
關係資料庫:MySQL、Oracle、MSsql、DB2,它儲存的是關聯資料;在執行關聯查詢的時候,需要一些優化手段;資料庫 -> 業務資料庫 -> 業務表
非關係資料庫:儲存執行結果
1、文件型資料庫:Mongodb 執行查詢效率非常高,查詢結果很快,關聯查詢很慢;常常用於webService資料庫
2、記憶體型資料庫:redis 儲存熱資料(使用者查詢頻率非常高,但是資料更新頻率比較低) 用於做中間資料庫--訊息
3、MongoDB在CMD命令列中的基本使用
a、幫助方法的使用
全域性幫助命令:help
集合的幫助命令:db.mycoll.help() help on collection methods

顯示當前伺服器上的所有資料庫名字:show dbs
show collections show collections in current database 顯示當前業務資料庫中的集合
在mongodb中沒有表的概念,資料表是集合(因為mongodb儲存的是json物件)
b、檢視資料庫常用方法
use <db_name> set current database 設定某個業務資料庫為當前資料

在mongodb中,資料庫和集合可以不存在
然後使用use來指定一個數據庫就可以了,指定的資料庫可以不存在,一旦往資料庫中插入資料,那麼資料庫和集合自動建立
c、資料新增、查詢
db.mycoll.insert(obj)

db.mycoll.insert({id: 'admin', name: '超級管理員'})

db.mycoll.insertMany([
{id: 'zhangsan01', name: '張三01', age: 21, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan02', name: '張三02', age: 22, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan03', name: '張三03', age: 23, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan04', name: '張三04', age: 24, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan05', name: '張三05', age: 25, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan06', name: '張三06', age: 26, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan07', name: '張三07', age: 27, sex: 1, phone: ['13691715060', '13691715061']}
])

db.mycoll.find([query],[fields]) - query is an optional query filter. fields is optional set of fields to return.
e.g. db.mycoll.find( {x:77} , {name:1, x:1} )
db.mycoll.find([query],[fields]) 這個方法可以傳遞兩個引數 fields 表示從這個集合中取哪些欄位或則哪些欄位不取出來
query -> 查詢條件物件

db.mycoll.find({id: 'admin'}) 查詢id為admin的使用者資訊

db.mycoll.find({id: 'admin'}, {name: 0, _id: 0}) 只有0,那麼剩下欄位都要返回
db.mycoll.find({id: 'admin'}, {name: 1, _id: 0}) 只有1的欄位會返回
db.mycoll.find({id: 'admin'}, {name: 1}) 如果有1,那麼_id會預設返回

大於:&gt; -> {age: 大於22小於26} -> db.mycoll.find({age: {$gt: 22, $lt: 26}}) => 有一些mongodb自己的一個屬性:$gt
----------------------------------------------------------
1、MongoDB在CMD命令列中的基本使用 -- 在集合中有一個_id欄位,是Mongodb自動新增的唯一標識,不要去修改
d、資料修改
db.mycoll.updateOne( filter, <update object or pipeline>, <optional params> ) - update the first matching document, optional parameters are: upsert, w, wtimeout, j, hint
db.mycoll.updateOne( filter, <update object or pipeline>, <optional params> ) => filter 篩選(過濾)條件 update object 更新物件

db.mycoll.update({id: 'zhangsan01'}, {sex: 2})
2022-05-24T10:38:28.375+0800 E QUERY [js] uncaught exception: Error: the update operation document must contain atomic operators :
DBCollection.prototype.updateOne@src/mongo/shell/crud_api.js:565:19
db.mycoll.updateOne({id: 'zhangsan02'}, {$set: {sex: 2}})
e、資料刪除
db.mycoll.deleteOne({sex: 2})
f、資料條件查詢
2、使用者資料模型設計
用資料來描述真實世界中的事物
{
id: String,
name: String,
age: Number,
dept: String,
position: String,
date: Date,
birthday: Date,
address: String,
phone: String,
remark: String
}

----------------------------------------------------------

1、整合MongoDB到Express框架中
所以需要整合第三方庫:cnpm i -S mongoose (--save -S 釋出依賴) --save-dev -D 開發依賴
專案流程
分析 -> 梳理 -> 羅列步驟
建立一個伺服器,需要實現一個靜態頁面,還有一個介面,這個介面可以在頁面上呼叫,然後獲取到mongodb中的資料
建立伺服器 -> 靜態伺服器 -> 開發一個介面 -> 頁面上呼叫介面 -> 返回模擬資料 -> 連線資料庫 -> 呼叫資料介面獲取資料 -> 返回真實資料給頁面
restful架構設計:
使用method(請求方式)來聲明當前要執行介面操作 C create PUT,R retrieve GET,U update POST, D delete DELETE

a、express 方法建立例項
b、listen 方法監聽埠啟動服務
c、新建一個目錄--用於存放所有的js、html、css程式碼、png等靜態檔案
d、use 一箇中間件(static)來實現靜態伺服器
e、開發一個get介面:/user/list
f、使用XHR(XMLHttpRequest)傳送請求
g、連線資料庫並呼叫 find 方法?

2、mongoose的庫的使用
a、連線資料庫
b、建立資料模型

----------------------------------------------------------
1、開發使用者資訊獲取方法
a、呼叫獲取資料介面
b、返回資料到前端介面

db.user_info.insertMany([
{id: 'zhangsan01', name: '張三01', age: 21, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan02', name: '張三02', age: 22, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan03', name: '張三03', age: 23, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan04', name: '張三04', age: 24, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan05', name: '張三05', age: 25, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan06', name: '張三06', age: 26, sex: 1, phone: ['13691715060', '13691715061']},
{id: 'zhangsan07', name: '張三07', age: 27, sex: 1, phone: ['13691715060', '13691715061']}
])