Mongoose基础入门

Mongoose介绍

Mongoose是MongoDB的一个对象模型工具,底层使用Mongodb的驱动,提供一套操作MongoDB数据库的接口。

安装

$ npm install mongoose

使用mongoose连接数据库

连接数据库MongoDB,会使用到mongoose.connect()方法。

  • mongoose.connect(url, options)
mongoose.connect('mongodb://username:password@host:port/database?options...');
  • username:数据库的账号
  • password:数据库的密码
  • host: 数据库主机的地址 (一般为127.0.0.1)
  • post:端口 (27017)
  • database:连接的数据库

实例:

const mongoose = require("mongoose");

//由于数据库没设置账号密码,这里省略账号密码  MongoDB的端口号为27017
const url = 'mongodb://127.0.0.1:27017/admin';  
//mongoose.connect 方法来链接 返回的是promise对象
mongoose
//connect参数2是个对象 为可选参数 当出现useNewUrlParser警告时 再来设置
  .connect(url, { useNewUrlParser: true })  
  .then(() => {
    console.log("数据库链接成功");
  })
  .catch(err => {
    console.log("数据库链接失败", err.message);
  });
  • connect() 函数接受回调函数,或返回一个 [promise]
mongoose.connect(uri, options, function(error) {
  // Check error in initial connection. There is no 2nd param to the callback.
});

// Or using promises
mongoose.connect(uri, options).then(
  () => { /** ready to use. The `mongoose.connect()` promise resolves to undefined. */ },
  err => { /** handle initial connection error */ }
);

数据库增删查改

Mongoose 的一切始于 Schema。每个 schema 都会映射到一个 MongoDB collection ,并定义这个collection里的文档的构成。

  • 实例Schema
var SingerSchema =mongoose.Schema({
     name : String,
     age : Number
})

document 里每个属性的类型都会被转换为 在 SingerSchema 里定义对应的 SchemaType。

允许使用的 SchemaTypes 有:

  • String
  • Number
  • Date
  • Buffer
  • Boolean
  • Mixed
  • ObjectId
  • Array
  • 创建一个 model
    mongoose.model()
var SingerSchema =mongoose.Schema({
     name : String,
     age : Number
})
var Singer=mongoose.model("Singer",SingerSchema)

第一个参数是跟 model 对应的集合( collection )名字的 单数 形式。 Mongoose 会自动找到名称是 model 名字 复数 形式的 collection。 对于上例,对的是数据库的集合的singers。

  • 如果想要实现对单数的集合操作,可以修改为
var SingerSchema =mongoose.Schema({
     name : String,
     age : Number
})
//第三个参数要与集合名一致大小写
var Singer=mongoose.model("Singer",SingerSchema,singer)  
  • 实现对数据的查询
    使用的model 的 find静态方法进行数据的查询
Singer.find({},function(err,doc){
    if(err){
        console.log("抛出"+err)
    }
    console.log(doc)
})

另外也可以使用findById, findOne, 和 where 这些静态方法,进行查询。

  • 实现对数据的增加
    使用的model 的 create静态方法进行数据的查询
Singer.create({name:"张三",age:"12"},function(err,doc){
    if(err){
        console.log("抛出"+err)
    }
    console.log("成功")
})
  • 实现对数据的删除
    使用的model 的 remove静态方法进行数据的查询
Singer.remove({name:"张三",age:"12"},function(err,doc){
    if(err){
        console.log("抛出"+err)
    }
    console.log("成功")
})
  • 实现对数据的更新
    使用的model 的 update静态方法进行数据的查询
Singer.update({name:"张总"},{age:"333355553"},{ multi: true },function(err,doc){
    if(err){
        console.log("抛出"+err)
    }
    console.log("成功")
})

有效选项:

  • safe (布尔值)安全模式(默认为在架构(true)中设置的值)

  • upsert (布尔值)是否创建不匹配的文档(默认false)

  • multi (布尔值)是否应更新多个文档(默认false)

  • runValidators:如果为true,则对此命令运行更新验证程序。更新验证器根据模型的架构验证更新操作。

  • setDefaultsOnInsert:如果upsert为true,则在创建新文档时,猫鼬将应用模型模式中指定的默认值。此选项仅在MongoDB> = 2.4上有效,因为它依赖于MongoDB的$setOnInsertoperator

  • strict(布尔值)会覆盖strict此更新的选项

  • overwrite (布尔值)禁用仅更新模式,从而允许您覆盖文档(false)update在发送所有值之前,所有值都将强制转换为其相应的SchemaType。该callback函数接收(err, rawResponse)

  • err 是错误(如果发生)

  • rawResponse 是Mongo的完整回应

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Mongoose 是什么?一般我们不直接用MongoDB的函数来操作MongoDB数据库 Mongose就是一套操...
    独孤久见阅读 3,685评论 0 1
  • 简介 Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具 那么要使用它,首先你...
    DavieKong阅读 4,572评论 0 0
  • 面试题一:https://github.com/jimuyouyou/node-interview-questio...
    R_X阅读 5,587评论 0 5
  • mongoose入门 MongoDB是一个开源的NoSQL数据库,相比MySQL那样的关系型数据库,它更显得轻巧、...
    huilegezai阅读 9,908评论 0 14
  • 幻想着和爱的人一起出发,两个人拉着一个行李箱,带着必需品,坐火车可以有两个相邻的位置,下车后准确找到预定的房间,不...
    爱奶酪的芝士阅读 2,839评论 3 3