安裝數據庫mongodb(非關系型數據庫)
- 高性能
- 易于部署
- 易于讀取
www.mongodb.com下載對應系統的版本
tar zxvf 解壓
在數據庫文件夾下創建自己的數據庫文件夾
bin文件夾下的
mongo --dbpath=../名字_db(默認端口27017)新建終端進入bin目錄
執行./mongo-
編寫腳本vim mongo.sh
#!/bin/bash cd /home/fengtianhe/mongodb/bin/ ./mongod --dbpath=../fth_db
//顯示數據庫
show dbs;
//使用數據庫,如果沒有此數據庫,就創建數據庫
use test;
//創建數據庫后不顯示,需要插入一條數據插入數據
db.user.insert({"name":"fth","tel":"12345679811"});
//查詢
db.user.find();
//插入多條
db.user.insertMany([{},{},{}]);
//格式化顯示
db.user.find().pretty();
//使用數據庫
use test;
//顯示表
show collections;
//更新
db.user.update({sex:{$gt:"1"}},{$set:{tel:"132"}});
//查看數據庫版本
db.version()
//獲取表的名字
db.getCollectionNames();
//查詢當前所屬數據庫
db.getName();
//刪除數據
db.user.remove({name:"fth"});
//添加數據
db.user.update({name:"fth"},{$set:{"zhiye":"xueshen"}},true);
express 框架
-
全局安裝:
npm install -g express-generator
-
創建項目:
express -e 項目名
views 視圖
routes 路由
app.js 入口文件
安裝外部依賴庫 npm install
啟動 npm start
修改首頁 vim view/index.ejs
-
修改路由 routes/index.js
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
作業1:整理mongodb增刪改查的筆記
插入數據
MongoDB是面向文檔存儲的數據庫,文檔結構形式叫BSON(類似JSON)
db.c1.insert({name:"user1"});
db.c1.save({_id:1, name:"user1"}); //save()如果已經存在就不會插入,如果不存在就插入這里要與id相同的值才不會被插入,save就是id相同就更新,沒有相同id就插入
for(x=1;x<=1000;x++) db.peroson.insert({Name:"zhuima"+x,Age:x%100,Address:x+".Number Beijing China"})//批量插入數據
刪除數據
db.c1.remove();
db.c1.remove({name:"user1"});
db.peroson.remove({Age:{$gt:1,$lt:10}})//批量刪除
查詢數據
db.c1.find({name:"user1"},{name:1, age:1});
db.peroson.find({Age:{$gt:33,$lt:44}});//按條件查詢
條件表達式
符號 | 名稱 |
---|---|
$gt | 大于 |
$lt | 小于 |
$gte | 大于等于 |
$lte | 小于等于 |
$ne | 不等于 |
修改數據
語法 db.collection.update( criteria, objNew, upsert, multi )
參數說明:
- Criteria:用于設置查詢條件的對象
- Objnew:用于設置更新內容的對象
- Upsert:如果記錄已經存在,更新它,否則新增一個記錄
- Multi:如果有多個符合條件的記錄,全部更新 注意:默認情況下,只會更新第一個符合條件的記錄
方法說明
- $set //修改字段
db.c5.update({name:"user1"},{$set:{age:10}},0,1);
- $inc //對字段進行加 a = a+1
db.c5.update({},{$inc:{age:-10}},0,1);
- $unset //刪除一個字段
db.c5.update({},{$unset:{age:1}});
- $push
db.c5.update({},{$push:{arr:1}}); //壓入一個值進入數組
- $pushAll
db.c5.update({}, {$pushAll:{arr:[2,3,4]}}); //壓入多個值進入數組
- $pop
db.c5.update({}, {$pop:{arr:1}}); //彈出數組中的第一個元素
- $addToSet
{$addToSet: {field: value}}
如果filed是一個已經存在的數組,并且value值不在其中,那么value加入到數組中
filed不存在,那么把value當成一個數組存儲到filed中
filed是一個已經存在的非數組類型,那么將會報錯
- 擴展肜戶
{$addToSet:{a:{$each:[1,2,3,4,5,6]}}};
$pull
語法:{$pull:{field:_value}}
功能: 如果field是一個數組,那么刪除符合_value檢索條件的記錄
如果field是一個已經存在的非數組,那么會報錯$pullAll
語法: {$pullAll:{field:value_array}}
功能: 同$pull類似,只是value的數據類型是一個數組
$rename
語法:{$rename:{old_field_name: new_field_name}}
功能:重命名指定的字段名稱特殊操作符:$
$操作符代碼查詢記錄中第一個匹配條件的記錄項
$db.c5.update({"arr.title":"linx"}, {$set:{arr.$.title:"I lover linx"}});
注意: 在數組中用$配合$unset操作符的時候,效果不是刪除的元素,而是把匹配的元素變成null
$db.c5.update({"arr.title":"php"},{$unset:{arr.$:1}});
統計:
db.c1.count();
db.c1.find().count();
//count(1); 里面有一個條件,如果為1,那么會取條件,如果為0不會理會條件語句
排序:
db.c1.find().sort(age:1); //1是升序 0是降序
取多少個
db.c1.find().limit(4);
$exists操作檢查一個字段是否存在
db.c2.find({age:{$exists:1}}); 測試一個字段是否存在
$in 操作類似于傳統關系數據庫中的IN
db.c1.find({age:{$in:[1,2,3]}})
$nin 與$in相反
db.c1.find({age:{$nin:[2,3,4]}});
$or 查看指定多個條件的記錄,跟sql的or差不多
db.c1.find({$or:[{name:"user1"},{name:"user2"},{age:10}]});
$nor 與$or相反過濾指定的條件
db.c1.find({$nor:[{name:"user1"},{name:"user2"},{age:10}]});
NULL查詢(有一個值是為null,或者一個值不存在)
db.c4.find({age:null}); //列出所有為null或者不存在的值
第二種寫法
db.c4.find({age:{$exists:1, $in:[null]}});
//兩個條件,一個是exists必須存在,二是為null的數據