数据库概念对比
SQL | Mongo |
---|
表(Table) | 集合 (collection) |
行 (Row) | 文档 (Document) |
列 (Col) | 字段 (Field) |
主键 (primary Key) | 对象ID (ObjectId) |
数据库操作
创建数据库 | use demo |
---|
查看数据库 | show dbs |
删除数据库 | db.dropDatabase() |
集合操作
创建集合 | db.createCollection(name) |
---|
查看集合 | show collections |
删除集合 | db.collection.drop() |
文档操作
创建文档 | db.collection.insertOne({}) db.collection.insertMany({}) |
---|
查看文档 | db.collections.find({}) db.collections.findOne({}) |
删除文档 | db.collection.deleteOne() db.collection.deleteMany() |
更新文档 | db.collection.update({],{},false,true}) |
条件操作
大于 | $gt |
---|
小于 | $lt |
大于等于 | $gte |
小于等于 | $lte |
返回数据库指定的字段
// 方式一
const response = 集合名称.findOne({
查询的字段:查询的参数,
...
},'返回的字段1 字段2 字段3 ...')
// 方式二
/**
* 通过json方式 1是返回 0是不返回
*/
const response = 集合名称.findOne({
查询的字段:查询的参数,
...
},{key1:1,key2:1,...})
// 方式三
/*
* 通过 select("key")
*/
const response = 集合名称.findOne({
查询的字段:查询的参数,
...
}).select('key','key')
批量更新数据技巧
// 方式一
/*
* 这里的User是定义好的数据模型
*/
const User = require('./../models/userSchema')
const res = User.updateMany({ $or: [{ userId: 10001 }, { userId: 10002 }] },{state:2})
/*
* 表示将userId 10001,10002数据中的 state 改为 2
*/
// 方式二
const User = require('./../models/userSchema')
const res = User.updateMany({userId:{$in:[10001,10002]}},{state:2})
上面两种方法都会返回删除后的条数
查找并更新数据
const User = require('./../models/userSchema')
/*
* 这里的User是定义好的数据模型
* 查找 User集合中 userId为100的数据,更新字段 mobile、job 两个字段
*/
const res = await User.findOneAndUpdate({ userId:"100" }, { mobile:123, job:456 });
findOneAndUpdate 使用场景—-自增ID
新建数据模型 counterSchema
/**
*维护用户ID自增长表
*/
const mongoose = require("mongoose")
const userSchema = mongoose.Schema({
_id:String,
sequence_value:Number
})
module.exports = mongoose.model("counter",userSchema,"counters")
/**接受三个参数
* 模型名称
* 模型
* 集合名称
*/
使用
const doc = await Counter.findOneAndUpdate({ _id: 'userId' }, { $inc: { sequence_value: 1 } }, { new: true })
/*
* 第一个参数为要自增的字段。{ _id: 'userId' }
* 第二个参数为 $inc修饰符 sequence_value 字段加一
* 第三个参数为 new:true 表示返回更新后的对象,为false表示更新前的对象,默认是false
*/
查找相关的技巧
/*
* 这里的User是定义好的数据模型
* 使用 $or 修饰符 {$or:[{查找的key:查找的value,key:value}]},"表示返回的字段1 返回的字段2 返回的字段3"
*/
const User = require('./../models/userSchema')
const res = await User.findOne({$or:[{userName:"admin",userEmail:"admin@qq.com"}]},"_id userName userEmail")
创建或插入文档
/*
* 这里的User是定义好的数据模型
*/
const User = require('./../models/userSchema')
const user = new User({
userId:doc.sequence_value,
userName,
userPwd:md5('admin'),
userEmail,
role:1,// 默认为普通用户
roleList,
job,
state,
deptId,
mobile
})
user.save()