mongoose的一些操作

1.连接mongodb:找到安装mongodb的目录bin文件目录下,执行mongod --dbpath=这里写项目的db文件夹 --port=这里是端口号。

2.在node里边引入并使用,命名为db.js:   
        var mongoose = require('mongoose');
        var DB_URL = 'mongodb://localhost:27017/数据库名字'
 
        //连接
        mongoose.connect(DB_URL);
        //连接成功
        mongoose.connection.on('connected', function(){});
        //连接异常
        mongoose.connection.on('error', function (err){});
        //连接断开
        mongoose.connection.on('disconnected', function(){});
        
        //导出
        module.exports = mongoose;
3.连接成功之后,定义一个user的Schema,命名为user.js:
        var mongoose = require('./db.js');
        var Schema = mongoose.Schema;
 
        var UserSchema = new Schema({
                username: {type: String, index: true}  //index:设置索引
                password: {type: Number},
                age: {type: Number},
                loginDate: {type: Date, default: Date.now} //default: 默认值
         });
        
        //导出User的model
        module.exports = mongoose.model('User', UserSchema);
 
        Schema Type 内置类型如下:
        
                String    Number    Boolean | Bool    Array    Buffer    Date    ObjectId | Oid    Mixed
 
下面是一些操作api:
 
4.插入: Model#save([fn])
          插入的时候需要new一下
          var user = new User({.....});
          next=>
          user.save().then().catch();
 
5.更新:Model.update(条件, 更新的数据, [options], [callback])
            不需要new
            User.update(....)
 
6.根据_id更新: Model.findByIdAndUpdate(id,[update], [options], [callback])
            不需要new
            User.findByIdAndUpdate (....)
 
7.找到一条记录并更新:Model.findOneAndUpdate([conditions], [update] [options], [callback])
            不需要new
            User.findOneAndUpdate (....)
 
8.删除:Model.remove(conditions, [callback])
            不需要new
            User.remove (....)
 
9.通过id删除:Model.findByIdAndRemove(id, [options], [callback])
             不需要new
            User.findByIdAndRemove (....)
 
10.找到一条记录并删除:Model.findOneAndRemove(conditions, [options], [callback])
            不需要new
            User.findOneAndRemove (....)
 
11.条件查询:Model.find(conditions, [fields], [options], [callback])
            不需要new
            User.find (....)
 
            如果第一个参数是{}那就是全部查询
            第二个参数是是否要输出某些字段: 例如:{username: 1} 1:表示输出该字段, 0:表示不输出
            
            比如要查询年龄范围条件:User.find({age: {$gte: 21, $lte:65}}, callback)
            条件类型列表     
            $lt     小于
            $lte     小于等于
            $ne            不等于
       $in             在多个值范围内
       $nin           不在多个值范围内
       $all            匹配数组中多个值
       $regex  正则,用于模糊查询
       $size   匹配数组大小
       $maxDistance  范围查询,距离(基于LBS)
       $mod     取模运算
       $near   邻域查询,查询附近的位置(基于LBS)
       $exists    字段是否存在
       $elemMatch  匹配内数组内的元素
       $within  范围查询(基于LBS)
       $box    范围查询,矩形范围(基于LBS)
       $center       范围醒询,圆形范围(基于LBS)
       $centerSphere  范围查询,球形范围(基于LBS
            $slice    查询字段集合中的元素(比如从第几个之后,第N到第M个元素)
 
12.数量查询:Model.count(conditions, [callback])
            不需要new
            User.count (....)
 
            如果第一个参数是{}那就是全部查询
 
13.根据_id查询:Model.findById(id, [fields], [options], [callback])
            不需要new
            User.findById (....)
 
            第二个参数是是否要输出某些字段: 例如:{username: 1} 1:表示输出该字段, 0:表示不输出
 
14.分页查询
            var pageSize = 5;                                            //一页多少条
            var currentPage = 1;                                       //当前第几页
            var sort = {loginDate: -1};                               //排序(按登录时间倒序)
            var condition = {};                                           //条件
            var skipnum = {currentPage -1} * pageSize;   //跳过数
 
            User.find(condition).skip(skipnum).limit(pageSize).sort(sort).exec(function (err, res){})
 
15.去重:Model.distinct(fieId, [conditions], [callback])
 
16.查找一条记录:Model.findOne(conditions, [fields], [options], [callback])
 
17.查找一条记录并删除:Model.findOneAndRemove(conditions, [options], [callback])
 
18.查找一条记录并更新:Model.findOneAndUpdate([conditions], [update], [options], [callback])
posted @ 2018-02-28 13:46  萱萱爸爸爱搬砖  阅读(567)  评论(0)    收藏  举报