20160812mongodb增刪改查和express的理解

安裝數據庫mongodb(非關系型數據庫)

  • 高性能
  • 易于部署
  • 易于讀取
  1. www.mongodb.com下載對應系統的版本

  2. tar zxvf 解壓

  3. 在數據庫文件夾下創建自己的數據庫文件夾

  4. bin文件夾下的
    mongo --dbpath=../名字_db(默認端口27017)

  5. 新建終端進入bin目錄
    執行./mongo

  6. 編寫腳本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 框架

  1. 全局安裝:

     npm install -g express-generator
    
  2. 創建項目:

     express -e 項目名
    

views 視圖
routes 路由
app.js 入口文件

  1. 安裝外部依賴庫 npm install

  2. 啟動 npm start

  3. 修改首頁 vim view/index.ejs

  4. 修改路由 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:如果有多個符合條件的記錄,全部更新 注意:默認情況下,只會更新第一個符合條件的記錄
方法說明
  1. $set //修改字段

db.c5.update({name:"user1"},{$set:{age:10}},0,1);

  1. $inc //對字段進行加 a = a+1

db.c5.update({},{$inc:{age:-10}},0,1);

  1. $unset //刪除一個字段

db.c5.update({},{$unset:{age:1}});

  1. $push

db.c5.update({},{$push:{arr:1}}); //壓入一個值進入數組

  1. $pushAll

db.c5.update({}, {$pushAll:{arr:[2,3,4]}}); //壓入多個值進入數組

  1. $pop

db.c5.update({}, {$pop:{arr:1}}); //彈出數組中的第一個元素

  1. $addToSet

{$addToSet: {field: value}}

如果filed是一個已經存在的數組,并且value值不在其中,那么value加入到數組中

filed不存在,那么把value當成一個數組存儲到filed中
filed是一個已經存在的非數組類型,那么將會報錯

  1. 擴展肜戶

{$addToSet:{a:{$each:[1,2,3,4,5,6]}}};

  1. $pull
    語法:{$pull:{field:_value}}
    功能: 如果field是一個數組,那么刪除符合_value檢索條件的記錄
    如果field是一個已經存在的非數組,那么會報錯

  2. $pullAll

語法: {$pullAll:{field:value_array}}
功能: 同$pull類似,只是value的數據類型是一個數組

  1. $rename
    語法:{$rename:{old_field_name: new_field_name}}
    功能:重命名指定的字段名稱

  2. 特殊操作符:$

$操作符代碼查詢記錄中第一個匹配條件的記錄項
$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的數據

作業2:安裝express,了解路由,嘗試把express改成mvc

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容