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

2022/10/28 4:25:01

本文主要是介绍【金秋打卡】第3天 MongoDB 操作符,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称: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: 判断属性是否存在
  • $type: 数据类型 所有 types 列表:https://docs.mongodb.com/manual/reference/operator/query/type/#available-types

格式:

  • { $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
})

图片描述



这篇关于【金秋打卡】第3天 MongoDB 操作符的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程