欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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,可以看到如下结果:

Mongoose的增删改查学习笔记

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字段被输出出来

Mongoose的增删改查学习笔记

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后,结果为:

Mongoose的增删改查学习笔记

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后,结果为:

Mongoose的增删改查学习笔记

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后,结果为:

Mongoose的增删改查学习笔记

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后,结果为:

Mongoose的增删改查学习笔记

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后,结果为:

Mongoose的增删改查学习笔记