zoukankan      html  css  js  c++  java
  • 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');
     }
    })
  • 相关阅读:
    spark-submit配置说明
    spark dataset join 使用方法java
    关于join算法的四篇文章
    IO负载高的来源定位
    MySQL执行SHOW STATUS查询服务器状态状态之Handler_read_* 详解
    5.6中使用字符串存放时间,导致隐式转换发生的记录
    Linux User's Manual IOSTAT
    【转】MegaSAS RAID卡 BBU Learn Cycle周期的影响
    mac下SSH很快被断开
    Java的正则表达式
  • 原文地址:https://www.cnblogs.com/xiaoxiaodevlog/p/10648173.html
Copyright © 2011-2022 走看看