课程名称:web前端架构师
课程章节:第14周 第六章 nodejs MongoDB 操作
主讲老师:张轩
课程内容: eggjs 调试技巧
mongodb 内置操作符都是以 $ 开头
{ age: { $gt : 30 } }
例如下面 使用 mongoose 查找年龄大于 22 的用户
import mongoose from 'mongoose' const Schema = mongoose.Schema const UserSchema = new Schema({ username: String, password: String, date: Date, createAt: Date, age: Number }) const User = mongoose.model('User', UserSchema); const data = await User.find({ age: { $gt: 22 } })
直接对象中添加多个条件即可, $and
{ age: { $gte: 30 }, name: 'james' }
格式
{ age: { $gte: 30 }, name: 'james' }
等于
{ $and: [ { age: { $gte: 30 } }, { name: 'james' } ] }
使用 $or
{ $or: [ { age: { $gte: 30 } }, { name: 'xiaobao' } ] }
格式:
{ $exists: true }
{ $type: 'string'}
const data = await User.find({ age: { $type: 'number' } })
利用这个我们可以实现分页功能
router.get('/user', async (ctx) => { const pagesize = Number(ctx.query.pagesize) || 2 const pagenum = Number(ctx.query.pagenum) || 0 const data = await User.find().limit(pagesize).skip(pagenum * pagesize) ctx.body = { data } })
sort 可以用来排序
const data = await User.find().sort({age: 1})
projection 可以用来指定返回的字段
0 表示不需要
例如屏蔽 password 字段
const data = await User.find({}, { password: 0 })
下面代码就会得到 name 和 _id 字段,当我们查询时,mongodb 默认会把 _id 字段给带上
const data = await User.find({}, { name: 1 })