美文网首页
20160812mongodb增删改查和express的理解

20160812mongodb增删改查和express的理解

作者: 代码界的小学生 | 来源:发表于2016-08-14 07:59 被阅读0次

    安装数据库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

    相关文章

      网友评论

          本文标题:20160812mongodb增删改查和express的理解

          本文链接:https://www.haomeiwen.com/subject/jxyesttx.html