IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mongo 进阶——查询 - 掘金 -> 正文阅读

[大数据]mongo 进阶——查询 - 掘金

mongodb原生查询

// 根据条件、投影查询指定集合,返回游标 cursor
db.<collection>.find([filter], [projection]); 
复制代码

返回结果

查询返回的是一个游标对象,它类似于迭代器,可以在查询结果中进行迭代

在这里插入图片描述

cursor的成员:

  • next():游标向后移动,并返回下一个结果,如果没有结果则报错

image.png

  • hasNext():判断游标是否还能向后移动,返回boolean

image.png

这个游标不会移动哦,只会判断游标的下一个是否可以移动

  • skip(n):去前面的n条数据,返回cursor

image.png

  • limit(n):取当前结果的n条数据,返回cursor

image.png

  • sort(sortObj):按照指定的条件排序,返回cursor

image.png

排序中,1是正序, -1是倒序

  • count():得到符合filter的结果数量,返回Number

image.png

  • size():得到最终结果的数量,返回Number

image.png

由于某些函数会继续返回cursor,因此可以对其进行链式编程,返回cursor的函数成为了链中的一环,无论它们的调用顺序如何,结果都是一样的:

image.png

执行的结果如下:

sort -> skip -> limit
复制代码

查询条件

find函数的第一个参数是查询条件filter,它的写法极其丰富,下面列举了大部分情况下我们可能使用到的写法。

// 查询所有 name="twinkle" 的用户
{
  name: "twinkle" 
}

// 查询所有 stuNo 以 1 结尾 并且 name 包含 tw 的用户
{
  stuNo: /1$/ , 
  name: /tw/  
}

// 查询所有 stuNo 以 1 结尾 或者 name 包含 mar 的用户
{
  $or: [
    {
      stuNo: /1$/,
    },
    {
      name: /mar/  
    },
  ],
}
  
// 查询所有年龄等于18 或 20 的用户
{
  age: {
    $in: [18, 20]
  }
}
  
// 查询所有年龄不等于18 或 20 或 25 的用户
{
  age: {
    $nin: [18, 20]
  }
}
  
// 查询所有年龄在 20~30 之间的用户
{
  age: {
    $gt: 20,
    $lt: 30
  }
}
复制代码

image.png 查询中出现了一些特殊的属性,它以$开头,表达了特殊的查询含义,这些属性称之为操作符 operator

查询中的常用操作符包括:

  • $or:或者
  • $and:并且
  • $in:在…之中
  • $nin:不在…之中
  • $gt:大于
  • $gte:大于等于
  • $lt:小于
  • $lte:小于等于
  • $ne:不等于

投影

find中的第二个参数projection表示投影,类似于mysql中的select

它是一个对象,表达了哪些字段需要投影到查询结果中,哪些不需要

// 查询结果中仅包含 name、age,以及会自动包含的 _id
{
  name: 1,
  age: 1
}

// 查询结果不能包含 loginPwd、age,其他的都要包含
{
  stuNo: 0,
  age: 0
}

// 查询结果中仅包含 name、age,不能包含_id
{
  name: 1,
  age: 1,
  _id: 0
}

// 错误:除了 _id 外,其他的字段不能混合编写
{
  name: 1,
  age: 0
}
// 这句话的意思是说,除了name字段要显示,其他的字段都不要显示,并且除了age字段不显示,其他字段都要显示,这句话是有矛盾的
复制代码

image.png

mongoose中的查询

<Model>.findById(id); // 按照id查询单条数据
<Model>.findOne(filter, projection); // 根据条件和投影查询单条数据
<Model>.find(filter, projection); // 根据条件和投影查询多条数据
复制代码

findOnefind如果没有给予回调或等待,则不会真正的进行查询,而是返回一个DocumentQuery对象,可以通过DocumentQuery对象进行链式调用进一步获取结果,直到传入了回调、等待、调用exec时,才会真正执行。

链式调用中包括:

  • count
  • limit
  • skip
  • sort

和mongo的使用方式一样

小彩蛋菜单🎉

  1. mongodb的备份与恢复
# 恢复
mongorestore -d <dbname> <backupDir>
# 备份
mongodump -d <dbname> -o <backupDir>
复制代码

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:37:22  更:2021-11-09 19:38:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:48:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码