mongodb学习
Evernote Export
1、梳理知识点
1、核心模块 : fs http querystring url
http: 搭建服务器 createServer(function( req,res ){ })
var cheerio = require("cheerio");
var fs= require("fs");
http.get("http://news.baidu.com",function(res){
var result = "";
res.on("data",function(data){
result+=data;
})
res.on("end",function(){
var $ = cheerio.load(result); cheerio对象 (类似jquery)
var ulist = $(".ulist");
var resStr = "";//将所有的新闻都提取出来
for( var i = 0 ; i < ulist.length ; i++ ){ //遍历每一个ul
resStr += ulist.eq(i).find("a").text() +"\n";
}
//将提取出的新闻 存入到一个文件中
fs.writeFileSync("1.txt",resStr)
})
})
fs模块 : readdir mkdir rmdir readFile readFileSync writeFile writeFileSync appendFile unlink rename
stat
pipe()
url 中解析文件的路径 : url.parse( "",true ) format() resolve()
querystring escape unescape stringify parse
2、第三方模块 : supervisor cheerio
1、判断服务器上面有没有upload目录。没有就创建这个目录。有就提示目录已经存在
stat
mkdir
fs.stat("upload",function(err,stats){
if( err ){ //没有目录 就创建目录
fs.mkdir("upload",function(){
console.log("创建成功");
})
}else{
console.log("目录已存在");
console.log(stats.isDirectory());
}
})
events模块
事件的引入及创建
var events=require('events');
var EventEmitter=new events.EventEmitter();
事件监听 on
广播方法 emit("事件",“发送的数据”)
path模块 :
extname() 获取文件的扩展名 path.extname(文件)
__dirname 获取绝对路径 (直接使用)
mongoDB使用 :
第一步 :安装mongodb程序
第二步 : 进入安装目录 C:\Program Files\MongoDB\Server\3.4\bin, 通过 mongod --dbpath e:\db1806 (数据库文件位置) 启动服务
第三步 : 打开cmd 进入到 C:\Program Files\MongoDB\Server\3.4\bin 目录下, 通过执行mongo命令,连接本地服务器
如果要连接远程服务器 ,使用 mongo 远程ip:27017
数据库相关概念
一、数据库和文件的主要区别
1、 数据库有数据库表、行和列的概念,让我们存储操作数据更方便
2、 数据库提供了非常方便的接口,可以让 nodejs、php java .net 很方便的实现增加修改删 除功能。
二、关系型和非关系型数据库的介绍
关系型数据库 mysql sql oracle
非关系型数据库 mongoDB
三、mongodb介绍
MongoDb 介绍 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像 关系数据库的。他支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类 型。Mongo 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以 实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、 易使用,存储数据非常方便。
四、使用 :
1、新建一个存放数据库的文件夹,注意:不能有中文和空格,建议不要放在 C 盘
2、启动 MongoDb 服务 服务端: mongod 开启数据库服务 mongod --dbpath d:\mongodbtest
数据库的相关命令
show dbs 查看所有数据库
use student 使用数据库、创建数据库
显示当前的数据集合(mysql 中叫表) show collections
删除数据库,删除当前所在的数据库 db.dropDatabase();
删除集合,删除指定的集合 删除表
语法 : 删除集合 db.COLLECTION_NAME.drop()
例如 : db.user.drop()
添加数据 (添加数据同时创建表) 或先创建集合 db.createCollection("name")
语法 :
db.表名.insert({"name":"zhangsan"}); student 集合名称(表) 插入多条数据 使用[{},{},{},....]
或
sb.user.save({ "name":"jack","age":90 }) 插入一条数据
数据查询操作
查找数据 find()
1、查询所有记录db.userInfo.find();
2、查询不重复数据 db.userInfo.distinct("name");
3、查询 age = 22 的记录 db.userInfo.find({"age": 22}); ($ne 不等于)
4、查询 age > 22 的记录db.userInfo.find({age: {$gt: 22}});
5、查询 age < 22 的记录db.userInfo.find({age: {$lt: 22}});
6、查询 age >= 25 的记录db.userInfo.find({age: {$gte: 25}});
7、查询 age <= 25 的记录 db.userInfo.find({age: {$lte: 25}});
8、查询 age >= 23 并且 age <= 26 注意书写格式db.userInfo.find({age: {$gte: 23, $lte: 26}});
9、查询 name 中包含 mongo 的数据 模糊查询用于搜索db.userInfo.find({name: /mongo/});
10、查询 name 中以 mongo 开头的db.userInfo.find({name: /^mongo/});
11、查询指定列 name、age 数据db.userInfo.find({}, {name: 1, age: 1});
12、查询指定列 name、age 数据, age > 25db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1});
13、按照年龄排序 1 升序 -1 降序 升序:db.userInfo.find().sort({age: 1});
14、查询 name = zhangsan, age = 22 的数据db.userInfo.find({name: 'zhangsan', age: 22}); 并且
15、查询前 5 条数据db.userInfo.find().limit(5);
16、查询 10 条以后的数据db.userInfo.find().skip(10);
17、查询在 5-10 之间的数据db.userInfo.find().limit(10).skip(5);
18、or 与 查询db.userInfo.find({$or: [{age: 22}, {age: 25}]});
19、findOne 查询第一条数据db.userInfo.findOne();
20、查询某个结果集的记录条数 统计数量db.userInfo.find({age: {$gte: 25}}).count();
修改数据
修改数据 : update()
查找名字叫做小明的,把年龄更改为 16 岁:
1db.student.update({"name":"小明"},{$set:{"age":16}});
查找数学成绩是 30,把年龄更改为 33 岁:
1db.student.update({"score.shuxue":30},{$set:{"age":33}});
修改 (如果不存在是否新增,是否修改多条)
db.users.update({age: 25}, {$set: {name: 'changeName'}}, false, true);
删除数据
清空所有数据 db.users.remove({})
删除数据 db.users.remove({age: 132});
nodejs操作数据库 mongodb
先安装mongodb模块 : npm install mongodb@2.2.19 --save