Node.js 之 Mongoose 入门

更多个人博客:(https://github.com/zenglinan/blog)

如果对你有帮助,欢迎star。

用 Mongoose 可以很简单地操作 MongoDB 数据库。

1. 引入并连接

需要通过 uri 指定所需连接数据库的路径, 格式为:

'mongodb://username:password@host:port/database?options...'

连接和断开连接时可以指定回调, 如下便是一个连接示例:

const mongoose = require('mongoose')
const uri = "mongodb://127.0.0.1:27017/db"

mongoose.connection.on('connected', () => {
  console.log("连接成功");
})
mongoose.connection.on('error', () => {
  console.log("连接失败");
})
mongoose.connection.on('disconnected', () => {
  console.log("失去连接");
})

mongoose.connect(uri)

也可以简化一下:

mongoose.connect(uri, (err) => {
  if(err) console.log(err)
  else console.log("连接成功");
  
})

2. Schema

Mongoose 中的一切都源于 Schema, 每个模式都映射到一个 MongoDB 集合,并定义该集合中文档的形状。

上面这段话来自于官方文档, 可能读起来有点迷糊, 没关系, 目前只需要知道他就像一种模式, 可以用来定义一些数据的格式, 那, Schema 怎么定义数据格式?

举个例子:

const UserSchema = new Schema({
  name: {type: String, require: true},
  age: {type: Number, require: true},
})

与此同时, 还可以定义更多的类型:

String
Number
Date
Buffer
Boolean
Mixed
ObjectId
Array

3. Model

Model(模型) 是通过 Schema 生成的构造器, 用于生成文档实例和操作数据库

const User = mongoose.model('User', UserSchema)
// 第一个参数会被 mongoose 转为小写复数形式, 作为 collection 集合的名字

除此之外, Model还提供了增删查改的功能:

增加一个文档:

Model.create({
  name: "xiaohua",
  age: 18
},(err,mes) => {
  if(err) console.error(err);
  else console.log(mes);
})

插入多条:

User.insertMany([{
  name: "yilei",
  age: 20
}, {
  name: "yilei",
  age: 60
}], (err, doc) => {
  if (err) console.error(err)
  console.log(doc);
})

除了可以用 Model 上的静态方法生成文档, 还可以通过实例化 Model 的方式生成文档, 然后用实例方法 save() 保存

删除一条:

User.deleteOne({
  name: "xiaoli"
}, (err) => {
  if(err) console.error(err)
})

删除多条:

User.deleteMany({
  name: "yilei"
}, (err, doc) => {
  if (err) console.error(err)
  console.log(doc);
})

User.find({
  name: "xiaoli"
}, (err, doc) => {
  if(err) console.error(err)
  console.log(doc);
})

// 匹配规则还可以更复杂一点, 比如我要找 10 =< 年龄 <= 99 的
User.find({
  age: {"$gt": 10, "$lt": 99}
}, (err, doc) => {
  if(err) console.error(err)
  console.log(doc);
})

除此之外, Model 上还有 findById, findOne, where等静态方法

更改一条:

User.updateOne({
  name: "yilei"
},{age: 21}, (err, doc) => {
  if (err) console.error(err)
  console.log(doc);
})

更改多条:

User.updateMany({
  name: "xiaoli"
},{age: 21}, (err, doc) => {
  if (err) console.error(err)
  console.log(doc);
})

4. Document

在 Mongodb 中, Document(文档) 即数据

每个 Document 都是一个 Model 的实例

save

文档可以用 save() 方法保存

// 实例化 document
let user = new User({
  name: "xiaohua",
  age: 18
})
// 保存
user.save((err,mes) => {
  if(err) console.error(err);
  else console.log(mes);
})

也可以用上述的 Model.create() Model.insertMany() 创建

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 node.js 的出现,使得用前端语法(javascript)开发后台服务成为可能,越来越多的前端因此因此接...
    champyin阅读 848评论 0 1
  • mongoose入门 MongoDB是一个开源的NoSQL数据库,相比MySQL那样的关系型数据库,它更显得轻巧、...
    huilegezai阅读 4,473评论 0 14
  • MongoDB 1. MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用...
    Kevinr阅读 1,583评论 0 3
  • 原文地址 本文简单的介绍了数据库,以及如何在 Node/Express 中应用他们。之后展示如何使用Mongoos...
    前端幼儿班阅读 5,193评论 1 5
  • 下午,推着小架子车填水窖。填进去的是土,埋葬了的,是过往的岁月。 上房后面土台台上的这眼水窖,是十六年...
    裴文达阅读 515评论 2 2