为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
MongoDB Node.js

课程名称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
})

图片描述

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消