MongoDB的基本使用

MongoDB的基本使用

1.MongoDB 的基本概念

MongoDB是一个基于文档的通用分布式数据库,专为现代应用程序开发人员和云时代而构建。

  • 数据库(database)
  • 集合(collection)
  • 文档(document)

大致存储结构如下:(类似json

  {
    database1: {
      collection1: [
        { document object 1 },
        { document object 2 },
        ...
      ],
      collection2: [
        ...
      ],
      ...
    },
    database2: {
      ...
    },
    ...
  }

2.安装并配置环境变量

下载地址:https://www.mongodb.com/download-center/community

3.基本命令

  • 查看版本信息
Mongod --version
  • 启动服务
Mongod
  • 连接数据库
Mongo
  • 退出连接
exit
  • 查看所有数据库(不会显示没有数据的数据库)
show dbs
  • 使用指定数据库 DbName (无则自动创建)
use DbName
  • 查看当前操作数据库(默认为 test )
db
  • 删除数据库
db.dropDatabase()
  • 查看所有集合
show collections
  • 查看集合 CName 中的所有文档
db.CName.find()
# pretty() 方法以格式化的方式显示文档
db.CName.find().pretty()
  • 删除集合 CName
db.CName.drop()
  • 向集合 CName 中插入文档
# 插入一条
db.CName.insertOne(ducment)
# 插入多条
db.CName.instert(ducment)
# 使用 save() 时,如果不指定 _id 字段则相当于 insert(), 指定 _id 字段贼会更新该 _id 字段的数据
db.CName.save(ducment)
  • 更新集合 CName 中的文档
# criteria:查询条件
# objNew:更新的对象和一些更新的操作符
# upsert:如果不存在该记录,是否插入objNew, 默认为 true
# multi: 是否更新所有符合查询条件的记录,默认为 false
db.CName.update(criteria, objNew, upsert, multi)
  • 删除集合 CName 中的文档
# query: 查询条件
# justOne:是否只删除一个文档
# writeConcern: 抛出异常的级别
db.CName.remove(query, {justOne:<Boolean>, writeConcern:<document>})

4.使用 Node 操作 MongoDB

(1)使用官方的 mongodb

网址:https://github.com/mongodb/node-mongodb-native

(2)使用第三方的 mongoose 来操作

mongoose是基于官方mongodb 的再次封装

网址:https://mongoosejs.com

操作代码示例
// 1.导入模块
const mongoose = require('mongoose')
const Schema = mongoose.Schema

// 2.连接数据库
mongoose.connect('mongodb://localhost:27017/mydb')

// 3.设计文档结构
const userSchema = new Schema({
  username: {
    type: String,  // 字段类型
    required: true  // 非空约束
  },
  password: {
    type: String,
    required: true
  },
  email: {
    type: String
  }
})

// 4.将文档结构发布为模型
// mongoose.model()
// 第一个参数: 一个大写名称单数字符串(mongoose 会自动将大写名词的字符串转换为小写复数形式的集合名称)
// 第二个参数:Schema(模式,架构)
// 返回值:模型构造函数
const User = mongoose.model('User', userSchema)

// 5.数据操作
// 添加并保存数据
let admin = new User({
  username: 'admin',
  password: 'admin@123',
  email: '1234567@qq.com'
})
admin.save(function (err, ret) {
  if (err) {
    return console.log(err)
  }
  console.log(ret)
})

// 查询所有数据
User.find(function (err, ret) {
  if (err) {
    return console.log(err)
  }
  console.log(ret)
})
// 查询满足条件的所有数据
User.find({ username: 'admin' }, function (err, ret) {
  if (err) {
    return console.log(err)
  }
  console.log(ret)
})
// 查询满足条件的第一条数据
User.findOne({ username: 'admin' },function (err, ret) {
  if (err) {
    return console.log(err)
  }
  console.log(ret)
})
// 还有 findById()

// 删除数据
/**
  删除的方法很多
  remove()
  deleteOne()
  deleteMany()
  findByIdAndDelete()
  findByIdAndRemove()
  findOneAndDelete()
  ...
*/
// 删除所有 username 为 admin 的数据
User.remove({ username: 'admin'}, function (err, ret) {
  if (err) {
    return console.log(err)
  }
  console.log(ret)
})
...

// 更新数据
/*
  方法也很多
  update()
  updateOne()
  updateMany()
  findByIdAndUpdate()
  findOneAndUpdate()
*/
User.update({ username: 'admin' }, { password: 'admin@me'}, function(err, ret) {
  if (err) {
    return console.log(err)
  }
  console.log(ret)
})
...

更多方法参考mongoose官网api:https://mongoosejs.com/docs/api/model.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值