在node.js中使用mongoDB需要在项目中安装mongoose模块,安装命令:npm install mongoose;对于mongoDB的操作我就不介绍了,大家感兴趣可以看我上篇博客:https://www.jianshu.com/p/dd70199063a4
接下来分享一下node中对mongoDB的操作
连接数据库
当能打印数据库连接成功字符,便是连接成功了
mongoose.connect("mongodb://localhost:27017/users");
var db = mongoose.connection;
db.on("error",function (error) {
if(error){
return console.log(error);
}
});
db.on("open",function () {
console.log("数据库连接成功");
});
Schema骨架
- Schema: 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
- Model: 由Schema发布生成的模型,具有抽象属性和数据库操作能力
每一个 Schema 对应 MongoDB 中的一个集合(collection),Schema 中定义了集合中文档的样式。
下面设置了集合users的基本样式,type是字段类型
var Schema = mongoose.Schema({
name:{type:String,default:11},
age:{type:Number},
hobby:{hobby1:{type:String},hobby2:{type:String}}
},{collection:'person'});
var Model = db.model("person",Schema);
操作数据库
- 查询所有年龄小于30的名字
参数一:查询条件
参数二:查询内容
参数三:对调函数,返回的数据为数组对象形式
Model.find({age:{$lt:30}},{name:1},function (err,data) {
if(err){
return console.log(err);
}else{
console.log(data);
}
})
返回的data为数组对象
82BE35246BEAF980CB6B160F2530F877.png
这里支持es6的promise写法
Model.find({age:{$gt:30}},null).then((data) => {
console.log(data);
}).catch((err)=>{
return console.log(err);
});
- 添加数据
使用create方法,返回的的data为添加的数据
添加一条姓名为『周宏伟』,年龄为52的数据
Model.create({name:"周宏伟",age:52},function (err,data) {
if(err){
return console.log(err);
}else{
console.log(data);
}
});
注意下图的数据中多一个 __v:0 字段,它代表是由node.js操作添加的数据
A5505778A0B3CEDA885D3C1CC4D5BF96.png
- 更新数据
使用update方法,返回的是更新成功或者失败的状态
Model.update({name:'李刚'},{$set:{age:35}},{multi:true},function (err,data) {
if(err){
console.log(err);
}else{
console.log(data);
}
});
ok:参数值为1表示更新成功;0表示更新失败
E6EE8C5091C7B4CB73E50AA0FEE6549D.png
- 删除数据
返回的data与上面update相似
Model.remove({name:'马云'},function (err,data) {
if(err){
console.log(err);
}else {
console.log(data);
}
});
- 游标操作
sort参数值:1代表正序;-1代表倒序;
以年龄倒序排序
Model.find({},{},{sort:{age:-1}},function (err,data) {
if(err){
console.log(err);
}else {
console.log(data);
}
});
网友评论