MongoDB基本增删改查

时间:2023-03-10 04:48:41
MongoDB基本增删改查

一、 在Node中如何操作 MongoDB数据
   1.使用官方的 mongodb 来操作:https://github.com/mongodb/node-mongodb-native
   2.使用第三方库 mongoose:https://mongoosejs.com/
   3.安装:

 npm i mongoose

  4. 引入需要的包

const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true});
mongoose.Promise = global.Promise;
var Cat = mongoose.model('Cat', { name: String });
for (var i = 0; i < 10; i++) {
var kitty = new Cat({ name: 'Zildjian' });
kitty.save(function (err) {
if(err) {
console.log(err)
} else {
console.log('meow')
}
});
}

二、 MongoDB 数据库的基本概念
    1. 可以有多个数据库  (MySQL叫表,,这里叫集合)
    2 一个集合中可以有多个文档(表记录)
    3. 文档结构很灵活,没有任何限制
    4. MongoDB 非常灵活,不需要像 MySql 一样先创建数据库、表、设计表结构
       5. 在这里只需要:当你需要插入数据的时候,只需要指定哪个数据库的哪个集合操作就可以
       6. 一切都由MongoDB来帮你自动完成建库建表这件事
 三、官方指南
   1. 设计Schema 发布Model

var mongoose = require('mongoose')
var Schema = mongoose.Schema

   2. 连接 MongoDB 数据库,localhost代表本机数据库,

// test是数据库的名字,它可以是还未存在的
        // 当你插入第一条数据之后就会被自动创建出来
   

mongoose.connect('mongodb://localhost:27017/test', {useNewUrlParser: true});

  3..设计集合结构(表结构)

    // 字段名称就是表结构中的属性名称
    // 约束的目的是为了保证数据的完整性,不要有脏数据

var userSchema = new Schema({
username: {
type: String,
require: true // 必须有
},
password: {
type: String,
require: true
},
email: {
type: String
}
});

  4. 将文档结构发布为模型

//     mongoose.model 方法就是用来将一个架构发布为 model
        //  第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称
   //  mongoose 会自动将大写名词的字符串生成 小写复数 的集合名
   //  例如这里的User最终会变为users集合名称
   //  第二个参数:架构 Schema
   // 返回值:,模型构造函数

 var User = mongoose.model('User', userSchema)

  5. 当我们有了模型构造函数之后,就可以使用这个构造函数对users集合中的数进行操作(增删改查)

   增加数据

var admin = new User({
username: 'admin',
password: '123456',
email: '2352404495@qq.com'
})
admin.save(function (err, ret) {
if (err) {
console.log('保存失败')
} else {
console.log('保存成功')
console.log(ret)
}
})

   查询:
      查全部:

`User.find(function (err, ret) {
if (err) {
console.log('failed')
} else {
console.log(ret)
}
})`
+ 按条件查一个,条件可以有多个:
`User.findOne({
username: 'chenxiao'
}, function (err, ret) {
if (err) {
console.log('failed')
} else {
console.log(ret)
}
})` //返回的是对象,如果把findOne换成find则会返回数组

    无条件查询一个,结果是第一条:

User.findOne(function (err, ret) {
if (err) {
console.log('failed')
} else {
console.log(ret)
}
})

   删除数据

User.remove({
username: 'admin'
}, function (err, ret) {
if (err) {
console.log('删除失败')
} else {
console.log('success')
console.log(ret)
}
})

     更新数据

User.findByIdAndUpdate('5ca44683632b0b27c8dacf0c', {
password: '154822'
}, function (err, ret) {
if (err) {
console.log('failed');
} else {
console.log('success');
}
})