20160812mongodb增删改查和express的理解
来源:互联网 发布:windows 禁用服务命令 编辑:程序博客网 时间:2024/06/15 11:02
安装数据库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}});//按条件查询
条件表达式
修改数据
语法 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的数据
作业2:安装express,了解路由,尝试把express改成mvc
- 20160812mongodb增删改查和express的理解
- MongoDB的增删改查
- mongodb的增删改查
- Mongodb的增删改查
- MongoDB:mongodb的安装和增删改查入门
- mogodb的一些小事 mongodb+express+node.js增删改查
- mongoDB搭建和运行简单的增删改查操作
- symfony2中mysql和mongodb的增删改查总结
- MongoDB增删改查
- mongodb增删改查
- MongoDB增删查改
- mongodb 增删改查
- mongodb增删改查
- mongodb增删改查
- MongoDB增删改查
- MongoDB增删改查
- mongodb增删改查
- MongoDB增删查改
- 20160810笔记 nodejs交互
- setField()方法
- android studio apk混淆
- 从Windows用scp往linux里传输文件
- 20160811(公开课)配置小规模服务器集群
- 20160812mongodb增删改查和express的理解
- 20160815 nodejs对mongodb的操作
- 20160816 JQueryMobile的使用
- 20160817(公开课)通往架构师之路--全栈工程师
- Oracle 如何在sql语句中获得随机数
- 20160818 短信接口和ajax请求
- 连接池DataSource
- MTK6735 Android之Camera驱动移植篇
- 20160821 长连接,socket实时聊天技术