node入门(四) - mongodb/redis

环境工具

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();
// });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值