首页 > 技术文章 > Node.js 之mongodb

article-record 2020-04-20 20:55 原文

Node第三方mongo包

npm install mongoose

连接mongoDB

const mongoose = require('mongoose')
// 连接 mongodb
mongoose.connect('mongodb://root:123456@121.37.169.23:27017/admin', {
  // 一些兼容配置,必须加的, 不加会报错
  useNewUrlParser: true,
  useUnifiedTopology: true
})
.then(() => console.log('success'))
.catch((err) => console.log(err))
// 创建集合
// 设定集合规则
const courseSchema = new mongoose.Schema({
  name: String,
  author: String,
  isPublished: Boolean
})
// 创建集合并应用规则
const Course = mongoose.model('Course', courseSchema) // courses

插入数据

创建文档 第一种添加方式
const course = new Course({
  name: 'node.js',
  author: 'study',
  isPublished: true
})
course.save().then(doc => console.log(doc))
第二种添加方式 支持 promise
Course.create({
  name: 'javascript',
  author: 'jin',
  isPublished: false
}, (err, res) => {
  console.log(err) // 默认是 null
  console.log(res) // 插入的数据
})
Course.create({
  name: 'javascript',
  author: 'jin',
  isPublished: false
}).then(res => conosle.log(res)).catch(err => err)

导入数据

[root@hecs-x-medium-2-linux-20200403135700 bin]# ./mongoimport -d admin -c users --file ../user.json

查询文档

// 创建集合规则
const userSchema = new mongoose.Schema({
  name: String,
  age: Number,
  email: String,
  password: String,
  hobbies: [String]
})
// 使用这个规则创建集合
const User = mongoose.model('User', userSchema)
// 查询用户集合中所有文档 返回一个数组
// User.find().then(res => console.log(res))
// 查询一条文档,默认返回当前文档中第一条
User.findOne({_id: '5c09f1e5aeb04b22f8460965'}).then(res => console.log(res))
// $gt 大于 $lt 小于
User.find({age: {$gt: 20, $lt: 50}}).then(res => console.log(res))
// $in 包含
User.find({hobbies: {$in: ['敲代码']}}).then(res => console.log(res))
// select() 查询所有 name email 默认会带上 id 可以去掉
User.find().select('name email -_id').then(res => console.log(res))
// 默认为升序, 如果降序就前面加上 -
User.find().sort('-age').then(res => console.log(res))
// skip() 跳过n个文档 limit() 只显示 n 个文档
User.find().skip(2).limit(3).then(res => console.log(res))

删除文档

// 删除某一条文档,匹配到多个的时候删除第一个返回被删除的文档
User.findOneAndDelete({_id: '5c09f1e5aeb04b22f8460965'}).then(res => console.log(res))
// 删除多个 如果是空对象,删除多个 返回删除的数量对象
User.deleteMany({}).then(res => console.log(res));

模板引擎 art-template

https://aui.github.io/art-template/zh-cn/docs/

推荐阅读