【金秋打卡】第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 操作符的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20go-zero 框架的 RPC 服务 启动start和停止 底层是怎么实现的?-icode9专业技术文章分享
- 2024-12-19Go-Zero 框架的 RPC 服务启动和停止的基本机制和过程是怎么实现的?-icode9专业技术文章分享
- 2024-12-18怎么在golang中使用gRPC测试mock数据?-icode9专业技术文章分享
- 2024-12-15掌握PageRank算法核心!你离Google优化高手只差一步!
- 2024-12-15GORM 中的标签 gorm:"index"是什么?-icode9专业技术文章分享
- 2024-12-11怎么在 Go 语言中获取 Open vSwitch (OVS) 的桥接信息(Bridge)?-icode9专业技术文章分享
- 2024-12-11怎么用Go 语言的库来与 Open vSwitch 进行交互?-icode9专业技术文章分享
- 2024-12-11怎么在 go-zero 项目中发送阿里云短信?-icode9专业技术文章分享
- 2024-12-11怎么使用阿里云 Go SDK (alibaba-cloud-sdk-go) 发送短信?-icode9专业技术文章分享
- 2024-12-10搭建个人博客网站之一、使用hugo创建个人博客网站