Mongoose的增删改查学习笔记
程序员文章站
2022-05-08 11:22:03
...
还是以之前文章里面的myapp项目为例子
1.app.js引入mongoose,在mongodb新建一个test数据库,并定义数据库里面的字段名称和类型
const mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/test');
var testSchema = new mongoose.Schema({
name: {type: String},
age: {type: Number, default: 0},
email: {type: String},
time: {type: Date, default: Date.now}
});
var testModel = mongoose.model('test1', testSchema); // 集合名称;集合的结构对象
2.插入数据
testModel.create([
{name: "闹闹1", age: 8},
{name: "闹闹2", age: 18},
{name: "闹闹3", age: 28},
{name: "闹闹4", age: 38},
{name: "闹闹5", age: 48},
{name: "闹闹6", age: 58, email:"aaa@qq.com"},
{name: "闹闹7", age: 68, email:"aaa@qq.com"},
{name: "闹闹8", age: 18},
{name: "闹闹9", age: 18, email:"aaa@qq.com"},
{name: "闹闹10",age: 18}
], function (error, docs) {
if(error) {
console.log(error);
} else {
console.log('save ok');
console.log(docs);
}
});
在改项目下启动服务npm start,可以看到如下结果:
3.查询数据,只包含name,age字段,去掉默认的_id字段
testModel.find({}, {name:1, age:1, _id:0}, function(err, docs){
if (err) {
console.log('查询出错:' + err);
} else {
console.log('{}查询结果为:');
console.log(docs);
}
});
npm start后,结果如下,可以看到只有age和name字段被输出出来
4.数据条件查询,查询age大于等于28,小于等于48
testModel.find({age: {$gte: 28, $lte: 48}}, {name:1, age:1, _id:0}, function(err, docs){
if (err) {
console.log('查询出错:' + err);
} else {
console.log('$gte,$lte查询结果为:');
console.log(docs);
}
});
npm start后,结果为:
5.数据条件查询,查询age为58、68的2条数据
testModel.find({age: {$in: [58, 68]}}, {name:1, age:1, _id:0}, function(err, docs){
if (err) {
console.log('查询出错:' + err);
} else {
console.log('$in查询结果为:');
console.log(docs);
}
});
npm start后,结果为:
6.数据条件查询,查询name为test3、或者age为18的全部数据
testModel.find({$or: [{name: '闹闹3'}, {age: 18}]}, {name:1, age:1, _id:0}, function(err, docs){
if (err) {
console.log('查询出错:' + err);
} else {
console.log('$or查询结果为:');
console.log(docs);
}
});
npm start后,结果为:
7.数据更新
var conditions = {name: 'test1'};
var update = {$set: {age: 11 }};
testModel.update(conditions, update, function(error){
if(error) {
console.log(error);
} else {
console.log('Update success!');
testModel.find({name: 'test1'}, {name:1, age:1, _id:0}, function(err, docs){
if (err) {
console.log('查询出错:' + err);
} else {
console.log('更新test1后的查询结果为:');
console.log(docs); // 更新test_update后的查询结果为空数组:[ ];
// 更新test1后的查询结果为: [ { name: 'test1', age: 11 } ]
// 只能更新本来已存在的数据
}
});
}
});
npm start后,结果为:
8.数据删除
var conditions = {name: '闹闹2'};
testModel.remove(conditions, function(error){
if(error) {
console.log(error);
} else {
console.log('Delete success!');
testModel.find({name: '闹闹2'}, {name:1, age:1, _id:0}, function(err, docs){
if (err) {
console.log('查询出错:' + err);
} else {
console.log('删除闹闹2后的查询结果为:');
console.log(docs); // 删除test2后的查询结果为空数组:[ ];
}
});
}
});
npm start后,结果为:
上一篇: 颈椎病的症状有哪些 如何预防颈椎病
下一篇: 神回答