在 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);
}
});
来源: http://www.jianshu.com/p/6aca64928982