环境工具
mongo Plugin -- idea中的mongo 插件
"mongoskin": "^2.1.0",
"mongodb": "^2.2.24",
安装依赖
npm install mongoskin
npm install mongo
打开命令
1.在当前文件夹新建文件夹db
2.cd db(已有文件,直接到2)
3.执行 打开命令
mongod -dbpath .
第一种连接方式
// 不推荐,和命令行不一样
// 命令行方式 use demo
// db.user....
"use strict";
var mongoskin = require('mongoskin');
var db = mongoskin.db('mongodb://localhost/demo');
var user = db.collection('user');
//删除数据
user.drop();
//执行插入一条数据
user.insertOne({name:'zhangsan'});
//执行插入多条数据
user.insertMany([{name:'wangwu'},{name :'lisi'}]);
// 查询
user.find().toArray(function (err,result) {
console.log(result);
/** 返回结果集
[ { _id: 591fbf7aadf561223070540f, name: 'zhangsan' },
{ _id: 591fbf7aadf5612230705410, name: 'wangwu' },
{ _id: 591fbf7aadf5612230705411, name: 'lisi' } ]
*/
});
//关闭资源
db.close();
第二种连接方式
1 . 绑定
"use strict";
var mongoskin = require('mongoskin');
var db = mongoskin.db('mongodb://localhost/demo');
//推荐使用方式 db绑定到user
db.bind('user');
2 . 插入
deleteOne()
updateOne()
insertOne()
insertMany()
//删除
db.user.drop();
// 插入一个
db.user.insertOne({name:'世界你好'},function (err,result) {
db.close();
});
// 插入多个
db.user.insertMany([
{name:'张三',age:29,die:['狼杀','毒杀','自杀']},
{name:'张三三',age:25,die:['狼杀','毒杀']},
{name:'三张三',age:23,die:['狼杀','自杀']},
{name:'王五',age:26,die:['毒杀','自杀']},
{name:'王五五',age:33,imp:[{id:5,password:123}]}
]);
db.close();
3 . 查询
//无参数查询所有
db.user.find().toArray(function (err,result) {
if(err){
console.error(err);
return;
}
console.log(result);
db.close();
});
//带条件查询
db.user.find({name:'张三'}).toArray(function (err,result) {
if(err){console.log(err);return;}
console.log(result);
/**
[ { _id: 591fcc33e62da5235ce83462,
name: '张三',
age: 29,
die: [ '狼杀', '毒杀', '自杀' ] } ]
*/
db.close();
});
/**带条件查询范围
*$gt:大于, $lt: 小于, $ne: 不等于
*$gte:大于等于,$lte: 小于等于
*/
db.user.find({age:{$lte:23}}).toArray(function (err,result) {
if(err){console.error(err);return;}
console.log(result);
/** 返回结果
* [ { _id: 591fcc33e62da5235ce83464,
* name: '三张三',
* age: 23,
* die: [ '狼杀', '自杀' ] } ]
* */
db.close();
});
/**
* 模糊查询
* /变量/--->x\相当于正则
* 性能不高,建议不使用
* */
db.user.find({name:/三$/}).toArray(function (err,result) {
if(err){console.error(err);return;}
console.log(result);
db.close();
});
/**
* $in --得到对应数组内匹配的
* $nin --不在in里面的
* $or -- 或者
* $not -- 不包含
* */
db.user.find({age:{$in:[21,23,25]}}).toArray(function (err,result) {
if(err){console.error(err);return;}
console.log(result);
db.close();
});
db.user.find({$or :[{name:'张三'},{name:'王五'}]}).toArray(function (err,result) {
if(err){console.error(err);return;}
console.log(result);
db.close();
});
/**
* $all -->die中只要包含数组中任意一个都查询
* */
db.user.find({die :{$all:['狼杀','自杀']}}).toArray(function (err,result) {
if(err){console.error(err);return;}
console.log(result);
db.close();
});
/**
* 导航 --> 处理复杂数组操作(传入数据区别)
* */
db.user.find({'imp.password' :123}).toArray(function (err,result) {
if(err){console.error(err);return;}
console.log(result[0].imp);//得到imp里的内容
db.close();
});
/** 使用_id作为查询条件的使用方式
* 使用helper查询索引,但是注意
* 一旦drop掉user,再次创建
* _id 的索引会发生改变
* */
var helper = require('mongoskin').helper;
db.user.find({'_id' :helper.toObjectID('591fcc33e62da5235ce83464')}).toArray(function (err,result) {
if(err){console.error(err);return;}
console.log(result);
db.close();
});
/**分页 -- 对照请看开始插入数据
*limt(x) x: 代表取出多少条,且只有一个参数
*skip(x) x: 代表跳过多少条
* */
db.user.find().skip(3).limit(1).toArray(function (err, result) {
if(err){console.error(err);return;}
console.log(result);
/**返回结果集
* [ { _id: 591fcc33e62da5235ce83464,
* name: '三张三',
* age: 23,
* die: [ '狼杀', '自杀' ] } ]
* */
db.close();
});
/**sort()对结果集排序
*sort([['age',1]]) 'age'代表要排序对象,
* 1 代表升序,-1降序
* */
db.user.find().sort([['age',-1]]).toArray(function (err, result) {
if(err){console.error(err);return;}
console.log(result);
});
建立索引
/**建立索引 -- 建议不使用,不存在事物完整性,展示型网站可能会用
* ensureIndex(索引属性){unique:true}
* 保证name,唯一
* */
// 首先 建立索引
db.user.drop();
db.user.ensureIndex('name',{unique:true},function (err,result) {
if(err){console.error(err);return;}
console.log(result);//name_1
});
//注释上面代码 -- 插入两行相同name
db.user.insertOne({name:'testEnsureIndex'},function (err,result) {
if(err){console.error(err);return;}
console.log(result);
});
db.user.insertOne({name:'testEnsureIndex'});
db.close();
// 注释上面代码 执行查询
db.user.find().toArray(function (err,result) {
if(err){console.error(err);return;}
console.log(result);
/** 返回结果集
* [ { _id: 592026088f31ee1b580ede8f, name: 'testEnsureIndex' } ]
* */
});
db.close();
redis
环境基于npm包管理
"redis": "^2.7.1",
在util/redis.js中
var client = require('redis').createClient();
client.on("error", function (err) {
console.log("Error :" , err);
});
client.on('connect', function(){
console.log('Redis连接成功.');
});
module.exports={
/**
* 添加string类型的数据
* @param key 键
* @params value 值
* @params expire (过期时间,单位秒;可为空,为空表示不过期)
* @param callBack(err,result)
*/
set : function (key,value,expire,callback) {
client.set(key, value,function (err, result) {
if (err) {
console.err(err);
callback(err,null);
return;
}
if (!isNaN(expire) && expire > 0) {
client.expire(key, parseInt(expire));
}
callback(null,result,client)
});
},
keys : function (key,callback) {
client.keys(key,function (err,result) {
if(err){
console.err(err);
callback(err,null);
return;
}
callback(null,result,client);
})
},
/**
* 查询string类型的数据
* @param key 键
* @param callBack(err,result)
*/
get : function (key,callback) {
client.get(key,function (err,result) {
if(err){
console.log(err);
callback(err,null);
return;
}
callback(null,result,client);
})
},
/**
* 删除string类型的数据
* @param key 键
* @param callBack(err,result)
*/
del : function (key,callback) {
client.del(key,function (err,result) {
if(err){
console.log(err);
callback(err,null);
return;
}
callback(null,result,client);
})
}
};
在test/redis_test.js中
var db = require('../util/redis');
// db.set('张三','1234','100',function (err,result,client) {
// if (err) {
// console.log(err);
// return;
// }
// console.log('插入数据结果:', result);
// client.quit();
// });
db.keys('sess:*',function(err,result,client){
if (err) {
console.log(err);
return;
}
console.log(result);
client.quit();
});
db.get('sess:JwS43ypB5DEYgLn8OuAerg1piVqk3nT5',function(err,result,client){
if (err) {
console.log(err);
return;
}
console.log(result);
client.quit();
});
// db.del('sess:wvXeb5CL9p31QJKKh5C6pwPHm-HmmOQA',function(err,result,client){
// if (err) {
// console.log(err);
// return;
// }
// console.log(result);
// client.quit();
// });