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])

浙公网安备 33010602011771号