阅读 120

MongoDB数据库小结

基础部分

数据库就是对数据库进行持久化的,防止电脑重启导致信息或者数据的丢失,因为程序是跑在内存里的

非关系数据库(NoSQL)反对SQL,因为有许多程序员不喜欢SQL的这种标准化,因为标准化在一定程度上限制了创新性。

mongoDB是非关系型数据库中的文档型数据库,为了快速的开发互联网应用。mongoDB中存储的是二进制的JSON,我们可以简单认为是JSON;

数据库中放集合,集合中放文档,我们是对文档进行crud,集合和数据库都不需要手动创建

指令解释
uer <数据库名>使用某个数据库
db表示当前所处的数据库
show dbs显示所有的数据库
show collections显示数据库中的所有集合
db.<集合名>.insert({JSON})向集合中插入JSON文档
db.<集合名>.find({属性名:"值",属性名:"值"})查询这个集合中的文档,传的这几个属性是AND的关系,返回的文档是同时符合这些属性的文档
db.<集合名>.findOne({属性名:"值",属性名:"值"})返回查到的第一条符合条件的文档,其余的和find()相同
db.<集合名>.find().count()查看返回的文档的总数
db.<集合名>.update({age:"19"},{name:"liuliu",age:"18",school:"tjut"})第一个参数是条件,第二个参数是替换为什么(不推荐使用
db.<集合名>.update({age:"19"},{$set:{age:"18"}})针对某一个属性去修改(推荐使用
db.<集合名>.remove({})删除文档
db.<集合名>.drop()删除集合
db.student.find({}).sort({age:1})将查询结果按照age进行排序,1表示升序,-1是降序

ps:

1.<>中的内容代表这是一个名称

2.update在默认情况下之后修改查找到符合条件的第一个,设置multi为true就可以修改多个,updateMany()会修改查到的所有符合条件的文档。

3.我们在实际的开发的时候其实是很少用到删除数据库文档操作的,一般的做法是设置一个字段,用来表示这个这个文档是不是被删除,例如用flag=1,来表示这个数据是被删除的,用flag=0来表示这个数据没有被删除的。然后再查询的时候结合flag的值来查询。

4.内嵌查询必须加引号 eg :db.user.find({"hobby.cities":"beijing"})。

5.我们不会执行不带条件的查询。因为这样的数据会很过,一般要用.limit(n)来限制最多显示n条数据。.skip(n)用于跳过指定数量的数据。

文档之间的关系

一对一,一对多,多对多

投影

db.student.find({},{name:1}) 拿到想显示的字段,而不是拿到所有的字段。比如这个查询语句find的第二个参数传了一个name,就表示拿到所有符合条件的文档的name。

mongoose(对象文档模型库)

mongoose是node中的一个模块,用这个模块可以操作mongoDB数据库。把数据库中的文档,映射成nodejs中的对象。mongoose中的Schema(模式结构),就是一个约束,比如值的类型,一条文档有多少键值对。Model:一个Model对应数据库中的集合,Document对应的数据库中的文档。

连接数据库的代码:

  const mongoose = require("mongoose");
 mongoose.connect("mongodb://localhost/student",{useNewUrlParser:true,useUnifiedTopology: true});
 mongoose.connection.once("open",function(){
    console.log("数据库连接建立");
 });
 mongoose.connection.once("close",function(){
     console.log("数据库连接断开");
 });
let Schema = mongoose.Schema;
let stuSchema = new Schema({
        name:String,
        age:Number,
        address:{
            type:String,
            default:"天津理工大学"
        }
  })
  //一个Model相当于数据库中的一个集合
 let stuModel = mongoose.model("tjutStudents",stuSchema); 
//  stuModel.create({
//      name:"zh",
//      age:18,
//      address:"南开大学"
//  })
stuModel.find({name:"zh"},function(err,docs){
    // docs是查询到的符合条件的结果,是数组的形式返回
    let j = JSON.stringify(docs)
    console.log(typeof docs);
    console.log(typeof j);
});
// stuModel.updateMany({name:"zh"},{$set:{address:"北京邮电大学"}},function(){
//     console.log("数据修改成功");
// })

// stuModel.countDocuments({},function(err,count){
//     console.log(count);
// })
 //一般情况下mongoDB数据库只需要连接一次,而且不会轻易断开
//  mongoose.disconnect();
复制代码
文章分类
前端
文章标签