关系型,遵循SQL标准,有库和表约束:Oracle、MySQL、SQLite、SQL Server
    非关系型(Not Only SQL),没有统一标准,一般键值对形式存储,读取速度更快:MongoDB(文档)、Redis/Memcache(内存)

    mongoDB:数据库厂牌
    mongod:启动数据库的命令
    mongo:连接数据库的命令
    mongoose:node中的一个模块,让node借助这个模块来实现管理mongoDB的程序,不需要通过命令管理,而是通过程序管理

    schema:约束字段/列数据
    model:模型 对应 集合,用它来实现数据的增删改查

    1. 安装 npm add mongoose
    2. 一、导入模块
    3. const mongoose = require('mongoose');
    4. 二、链接数据库
    5. const db = mongoose.createConnection('mongodb://usr:pass@localhost:port/database',
    6. {userNewUrlParser:true, useUnifiedTopology:true},err=>{
    7. if(err){
    8. console.log('数据库连接失败');
    9. return
    10. }
    11. console.log('数据库连接成功')
    12. })
    13. 三、设置数据模型(声明是哪个集合,限制字段个数和字段类型)
    14. const model = db.model('user',{
    15. name:{type:String,default:"username"},
    16. age:{type:Number},
    17. sex: String
    18. })
    19. 四、创建实例操作(CRUD
    20. //增
    21. const insertObj = new model(数据对象)
    22. insertObj.save()
    23. .then(res=>{
    24. return res
    25. })
    26. .catch(err=>{
    27. console.log('新增失败'+err)
    28. return false
    29. })
    30. //删
    31. model.deleteOne(条件对象)
    32. .then(res=>{
    33. return res.deletedCount
    34. })
    35. .catch(err=>{
    36. console.log('删除失败'+err)
    37. return false
    38. })
    39. //改
    40. model.updateOne(条件对象,数据对象)
    41. .then(res=>{
    42. return res.nModified
    43. })
    44. .catch(err=>{
    45. console.log('修改失败'+err)
    46. return false
    47. })
    48. //查
    49. model.findOne(条件对象)
    50. .then(res=>{
    51. return res
    52. })
    53. .catch(err=>{
    54. console.log(err)
    55. return false
    56. })

    show dbs
    显示所有库

    use 库名
    使用某一个库

    db
    显示当前正在操作的数据库名

    show collections
    显示当前库中的集合

    db.集合名.find()
    列出集合中的所有数据

    use 新库名
    创建一个新的数据库

    db.createCollection(‘集合名’)
    创建一个集合

    db.集合名.insert({“_id”:001, “name”:”zs”})
    插入一条数据

    db.集合名.remove({“_id”:001})
    删除一条数据,至少需要一个条件

    更新数据
    db.collection.save(obj)
    obj代表需要更新的对象,如果集合内部已经存在一个和obj相同的”_id”的记录,Mongodb会把obj对象替换集合内已存在的记录,如果不存在,则会插入obj对象。

    db.collection.update(criteria,objNew,upsert,multi)
    参数说明:
    criteria:查询条件
    objNew:update对象和一些更新操作符
    upsert:如果不存在update的记录,是否插入objNew这个新的文档,true为插入,默认为false,不插入。
    multi:默认是false,只更新找到的第一条记录。如果为true,把按条件查询出来的记录全部更新。

    删除整个集合
    db.集合名.drop()

    删除整个数据库
    db.dropDatabase()

    修改数据库名
    解决方案一:
    拷贝数据库后,删除原来的数据库

    1. db.copyDatabase('old_name', 'new_name');
    2. use old_name
    3. db.dropDatabase();

    解决方案二:
    使用renameCollection命令。当你把所有的集合移动到了新的库下,就相当于把整个库重命名了

    1. db.adminCommand({renameCollection: "olddb.test", to: "newdb.test"})