nodejs服务器操作MongoDB数据库
引入 mongoose 插件
指令安装:npm instll mongoose
这个模块负责操作 mongodb 数据库 负责定义哪些字段
var mongoose = require("mongoose");
1. 连接数据库
参数:1.数据库的服务器地址 2.数据库的参数配置 3.数据库的回调函数
mongoose.connect(
"mongodb://localhost:27017/mondb",
{
useNewUrlParser: true,
useUnifiedTopology: true,
},
function(err) {
if (err) {
console.log("数据库连接失败");
}
console.log("数据库连接成功");
}
);
2.创建 schema 对象,定义各种字段,及字段类型
如果类型首字母大写,不用加引号;如果首字母是小写,需要加引号;
let userSchema = new mongoose.Schema({
name: String,
age: "number",
address: {
type: String, // 字段类型
default: "未知", // 字段默认值
},
other: {
type: Array, // 数组类型的字段
default: ["男", "待业"],
},
info: {
type: Object, // 对象类型的字段
default: {
title: "现居住郑州",
},
},
});
3. 创建 model 对象, 相当于创建表 users:表名
let userModel = mongoose.model("users", userSchema);
4. 数据的处理
数据写入
-
单条数据写入
let u1 = new userModel({ name: "张三", age: 23, });//根据 model 对象,创建数据(Document) u1.save(function(err) { if (!err) console.log("数据保存成功"); });//将 u1 这条数据保存到 users 表中 -
数据批量写入
let arr = [ { name: "李四", age: 20, address: "郑州" }, { name: "王思", age: 30, address: "洛阳" }, ]; userModel.insertMany(arr, function(err) { if (!err) console.log("数据保存成功"); });
查询数据
-
查询单条数据
// 第一种写法 userModel.find({ name: "张三", age: 23 }, function(err, data) { if (!err) console.log(data);//data 查询成功返回的数据 else console.log(err);//err 返回查询是否出错 }); // 第二种写法 userModel.find({ name: "张三", age: 23 }).exec(function(err, data) { if (!err) console.log(data);//data 查询成功返回的数据 else console.log(err);//err 返回查询是否出错 }); -
查询多条数据
find()支持正则表达式查询
find({},{name:1}) 第一个参数为空,表示查询所有数据,第二个参数表示只查询显示 name 字段的值,默认 id 显示,值为:(_id:0)不显示 id
sort() 排序函数,字段为-1 是降序,字段为 1 是正序
userModel.find().sort({ age: -1 }).exec(function(err, data) { if (!err) console.log(data); else console.log(err); }); -
分页查询
skip(参数):起始的数据索引值, limit(参数):查询的数据个数
userModel.find().skip(0).limit(1).exec(function(err, data) { if (!err) console.log(data); else console.log(err); });
修改数据
-
修改单条数据
updateOne({条件},{$set:{需要更新的值}})
userModel.updateOne({ name: /^张/ }, { $set: { age: 50, address: "北京市" } }).exec(function(err, data) { if (!err) console.log("修改成功"); else console.log(err); }); -
批量修改数据
userModel.updateMany({ name: /^张/ },{$set:{age:50,address: "北京市"}}).exec(function(err, data){ if (!err) console.log("修改成功"); else console.log(err); });
删除数据
-
删除单条数据
userModel.deleteOne({ name: /^张/ }).exec(function(err, data) { if (!err) console.log("删除成功"); else console.log(err); }); -
删除多条数据
userModel.deleteMany({ name: /^张/ }).exec(function(err, data) { if (!err) console.log("删除成功"); else console.log(err); });

浙公网安备 33010602011771号