一、安装mongoose
npm install mongoose
二、连接数据库
// app.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/blog') //连接本地数据库blog
三、创建集合
// models/users.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
// 声明一个数据集 对象
var userSchema = new Schema({
username: {
type: String,
unique: true
}
});
module.exports = mongoose.model('users', userSchema);
集合的常用字段
var schema3 = new Schema({
test: {
type: String,
lowercase: true, // 总是将test的值转化为小写
uppercase: true, // 总是将test的值转化为大写
required:true, //设定是否必填
default:'star', //设定默认值
index:true, //设定索引值
unique:true, //索引值唯一
sparse:true, //是否启用稀疏索引
match:RegExp, //判断是否通过正则验证
enum:Array, //判断test值是否包含于enmu对应的数组中
min:Number, //判断对应值是否大于等于给定值
max:Number, //判断对应值是否小于等于给定值
trim:true //去除数据前后的空格
capped:1024 //限定大小最大为1024字节
validate:function,为此属性添加一个验证器函数,如demo1所示
get:function,//为这个属性定义一个定制的getter Object.defineProperty()。如demo2所示
set:function,//定义此属性的自定义设置Object.defineProperty()。如demo2所示
}
});
四、数据操作
var userModel = require("./user.js");
1、增加数据
//增加数据
userModel.create(userDate, (err, data) => {
if (err) {
console.log('保存失败');
} else {
console.log('保存成功');
}
});
//可同时添加多条数据
userModel.insertMany([userDate1, userDate2], (err, data) => {
if (err) {
console.log('保存失败');
} else {
console.log('保存成功');
console.info(data);
}
});
2、删除数据
userModel.remove({'username' : 'Tracy McGrady'}, function(err, data){
if (err) {
console.log('删除失败');
}
else {
console.log('删除成功');
}
})
//传入多条id,删除多条数据
userModel.remove({ _id: { $in: ['aID', 'bID'] } });
3、更新数据
//前面是查询条件,后面是修改为什么数据
//修改一条后停止
userModel.updateOne({'username' : 'Tracy McGrady'}, {'userpwd': 'zzzz'}, function(err, res){
if (err) {
console.log("Error:" + err);
}
else {
console.log("Res:" + res);
}
})
//修改所有的此数据
userModel.updateMany({'username' : 'Tracy McGrady'}, {'userpwd': 'zzzz'}, function(err, res){
if (err) {
console.log("Error:" + err);
}
else {
console.log("Res:" + res);
}
})
4、查询数据
userModel.find({'username' : 'Tracy McGrady'}, function(err, res){
if (err) {
console.log("Error:" + err);
}
else {
console.log("Res:" + res);
}
})
//查找一条后停止查询
userModel.findOne({'username' : 'Tracy McGrady'}
//按照_id对数据进行排序
userModel.find({'username' : 'Tracy McGrady'}).sort({'_id': '-1'}).exec(function (err, data) {
if (err) throw err;
})
//对范围进行查询,例如日期
const start = new Date(2018, 3, 1);
const end = new Date(2018, 4, 1);
userModel.find({'created_on': {$gte: start, $lt: end}}
//传入同一数据的多个值,查询多条数据
userModel.find({ _id: { $in: ['aID', 'bID'] } });
//条件查询
$or 或关系
$nor 或关系取反
$gt 大于
$gte 大于等于
$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个元素