继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

【金秋打卡】第3天 MongoDB 操作符

flask
关注TA
已关注
手记 45
粉丝 2
获赞 1

课程名称:web前端架构师

课程章节:第14周 第六章 nodejs MongoDB 操作

主讲老师:张轩

课程内容: eggjs 调试技巧

查询操作符

比较操作符

mongodb 内置操作符都是以 $ 开头

  • (>) 大于 - $gt
  • (<) 小于 - $lt
  • (>=) 大于等于 - $gte
  • (<= ) 小于等于 - $lte
  • (===) 等于 - $eq
  • (!==) 不等于 - $neq
    /格式
{ 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' }
   ]
}

Element Operators

格式:

  • { $exists: true }
  • { $type: 'string'}
   const data = await  User.find({
        age: {
            $type: 'number'
        }
    })

Mongodb 整体结果的处理

  • $limit 限制条数
  • $skip 跳过的条数

利用这个我们可以实现分页功能

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 可以用来排序

  • -1 降序
  • 1 升序
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
})

图片描述

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP