MongoDB查询文档

news2024/9/25 3:24:39
3.5 MongoDB 查询文档

MongoDB 查询文档使用 find() 方法。

find() 方法以非结构化的方式来显示所有文档。find()查询数据的语法格式如下:

db.collection.find(query, projection)[.pretty()]
  • query :可选,使用查询操作符指定查询条件

  • projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。

  • .pretty() : 美化查询结果。

  • 除find()外,还有findOne() 方法,它只返回一个文档。

MongoDB 与 RDBMS Where 语句比较

MongoDB与常规的 SQL 数据条件查询类似,通过下表可以更好的理解 MongoDB 的条件语句查询:

| 操作 | 格式 | 范例 | RDBMS中的类似语句 | | --- | --- | --- | --- | | 等于 | {<key>:<value> } | db.col.find({"by":"goudan"}).pretty() | where by = 'goudan' | | 小于 | {<key>:{$lt:<value>}} | db.col.find({"likes":{$lt:50}}).pretty() | where likes < 50 | | 小于或等于 | {<key>:{$lte:<value>}} | db.col.find({"likes":{$lte:50}}).pretty() | where likes <= 50 | | 大于 | {<key>:{$gt:<value>}} | db.col.find({"likes":{$gt:50}}).pretty() | where likes > 50 | | 大于或等于 | {<key>:{$gte:<value>}} | db.col.find({"likes":{$gte:50}}).pretty() | where likes >= 50 | | 不等于 | {<key>:{$ne:<value>}} | db.col.find({"likes":{$ne:50}}).pretty() | where likes != 50 |

MongoDB and条件

MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件。

语法格式如下:

>db.col.find({key1:value1, key2:value2}).pretty()

MongoDB OR 条件

MongoDB OR 条件语句使用了关键字 $or,语法格式如下:

>db.col.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()

查询案例

-- 查询myTable所有数据
> db.myTable.find()
{ "_id" : ObjectId("62a46dee4c256eb2b320f208"), "id" : 1, "name" : "goudan", "address" : "beijing" }
{ "_id" : ObjectId("62a46e194c256eb2b320f209"), "id" : 2, "name" : "mz", "address" : "beijing" }
{ "_id" : ObjectId("62a46e644c256eb2b320f20a"), "id" : 3, "name" : "sjg", "address" : "beijing" }
{ "_id" : ObjectId("62a46e644c256eb2b320f20b"), "id" : 4, "name" : "haonan", "address" : "jianshazui" }
{ "_id" : ObjectId("62a46eae4c256eb2b320f20c"), "id" : 5, "name" : "rz", "address" : "tangshan" }
​
-- 查询myTable name=sjg的数据
> db.myTable.find({"name":"sjg"})
{ "_id" : ObjectId("62a46e644c256eb2b320f20a"), "id" : 3, "name" : "sjg", "address" : "beijing" }
​
-- 查询myTable name=sjg and address=beijing的数据
> db.myTable.find({"name":"sjg","address":"beijing"})
{ "_id" : ObjectId("62a46e644c256eb2b320f20a"), "id" : 3, "name" : "sjg", "address" : "beijing" }
​
-- 查询myTable name = sjg or address=beijing的数据
> db.myTable.find({$or:[{"name":"sjg"},{"address":"beijing"}]})
{ "_id" : ObjectId("62a46dee4c256eb2b320f208"), "id" : 1, "name" : "goudan", "address" : "beijing" }
{ "_id" : ObjectId("62a46e194c256eb2b320f209"), "id" : 2, "name" : "mz", "address" : "beijing" }
{ "_id" : ObjectId("62a46e644c256eb2b320f20a"), "id" : 3, "name" : "sjg", "address" : "beijing" }
​
-- 查询myTable id > 1 and (name=sjg or address=beijing)的数据
> db.myTable.find({"id":{$gt:1},$or:[{"name":"sjg"},{"address":"beijing"}]})
{ "_id" : ObjectId("62a46e194c256eb2b320f209"), "id" : 2, "name" : "mz", "address" : "beijing" }
{ "_id" : ObjectId("62a46e644c256eb2b320f20a"), "id" : 3, "name" : "sjg", "address" : "beijing" }
​
-- 查询myTable第一条数据
> db.myTable.findOne()
{
    "_id" : ObjectId("62a46dee4c256eb2b320f208"),
    "id" : 1,
    "name" : "goudan",
    "address" : "beijing"
}
​
-- 查询myTable满足name=sjg or address=beijing条件的第一条数据
> db.myTable.findOne({$or:[{"name":"sjg"},{"address":"beijing"}]})
{
    "_id" : ObjectId("62a46dee4c256eb2b320f208"),
    "id" : 1,
    "name" : "goudan",
    "address" : "beijing"
}

Guff_hys_python数据结构,大数据开发学习,python实训项目-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1334814.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

哪个牌子的台灯对学生的视力好?五款学生备考台灯推荐

护眼台灯在如今市场中销量越来越高&#xff0c;我作为一名电器测评博主&#xff0c;非常支持大家使用护眼台灯来提升日常的照明光线环境&#xff0c;它通过LED灯和专业的护眼技术&#xff0c;可以有效缓解用眼疲劳、帮助放松和舒适照明。但需要注意的是&#xff0c;目前市场中品…

【excel密码】Excel工作表不能复制或移动

为什么excel文件打开之后&#xff0c;工作表里是可以编辑的&#xff0c;但是想要移动工作表或者复制、重命名等操作&#xff0c;这是什么原因&#xff1f;其实这是因为设置了工作簿保护&#xff0c;设置了保护的工作簿无法对整张工作表进行操作。 想要取消这种保护&#xff0c;…

操作系统期末复习知识点二计算与应用

1.理解银行家算法判断死锁的定理并能计算相关的参数。 2.能利用LRU、FIFO算法求缺页率。 3.纯页式管理中&#xff0c;求逻辑地址对应的物理地址&#xff0c;页号、页内地址长度&#xff0c;画出逻辑地址的格式&#xff0c;在引入块表时&#xff0c;求出有效访问时间。 4.可变分…

西门子PLC通过PROFINET协议与多功能电表通讯

西门子PLC通过PROFINET协议与多功能电表通讯 项目要求 西门子S71200PLC需要通过PROFINET协议和多功能电表通讯&#xff0c;读取线电压、相电压、线电流、相电流、有功功率、无功功率等参数。 项目实施 采用网关NET90-PN-MBT&#xff08;以下简称“网关”&#xff09;&#…

【Java】SpringBoot快速整合Kafka

目录 1.什么是Kafka&#xff1f; 主要特点和概念&#xff1a; 主要组成部分&#xff1a; 2.Kafka可以用来做什么&#xff1f; 3.SpringBoot整合Kafka步骤&#xff1a; 1. 添加依赖: 2. 配置 Kafka: 3. 创建 Kafka 生产者: 4. 创建 Kafka 消费者: 5. 发布消息: 6. 使…

探索AIGC时代效能提升新路径,企业快成长AI技术创新论坛广州站圆满闭幕

在广泛数据的不断滋养下&#xff0c;AIGC技术愈发成熟。利用AIGC技术的生成能力辅助进行文案撰写、海报生成、美术设计已成为众多行业的高频需求。如今AIGC技术已走入更新发展的新时期&#xff0c;挖掘能力、探索场景&#xff0c;沉淀更多高效易用的精细化模型&#xff0c;也成…

3D渲染农场什么比较好用 2024渲染农场最新收费实测

随着数字设计领域的进步与发展&#xff0c;对于3D渲染服务的需求日益增加。3D渲染农场这一概念因此变得极为重要&#xff0c;特别是在电影制作、建筑可视化以及产品设计等行业中。现在&#xff0c;让我们深入了解3D渲染农场的定义以及市面上优秀的3D渲染服务提供商。 一、什么是…

Shell脚本应用(四)

一、文本处理器 1、sed工具 sed (Stream EDitor&#xff09;是-个强大而简单的文本解析转换工具&#xff0e;可以读取文本&#xff0e;并根据指定的条件对文本内容进行编辑&#xff08;删除&#xff0e;替换&#xff0e;添加、移动等)&#xff0c;最后输出所有行或者仅输出处理…

vue 项目/备案网页/ip网页打包成 apk 安装到平板/手机(含vue项目跨域代理打包成apk后无法访问接口的解决方案)

下载安装HBuilder X编辑器 https://www.dcloud.io/hbuilderx.html 新建 5APP 项目 打开 HBuilder X&#xff0c;新建项目 此处项目名以 ‘test’ 为例 含跨域代理的vue项目改造 若 vue 项目中含跨域代理&#xff0c;如 vue.config.js module.exports {publicPath: "./&…

探索 HTTP 请求的世界:get 和 post 的奥秘(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

【C++项目】ninja报错及解决方法

一、问题描述 C项目中&#xff0c;运行文件时出现以下报错&#xff1a; “ninja: error: ‘D:/Desktop/C Games Chapter 10/10.2 缁ф壙璁块棶鏉冪殑鎺у埗/simple_boss2.cpp’, needed by ‘CMakeFiles/C___Games_Chapter_10_2.dir/10.2_缁ф壙璁块棶鏉冪殑鎺у埗/simple_boss…

基于Java开发的微信约拍小程序

一、系统架构 前端&#xff1a;vue | element-ui 后端&#xff1a;springboot | mybatis 环境&#xff1a;jdk8 | mysql8 | maven | mysql 二、代码及数据库 三、功能说明 01. 首页 02. 授权登录 03. 我的 04. 我的-编辑个人资料 05. 我的-我的联系方式 06. …

基于5G智能网关的智慧塔吊监测方案

塔吊是建筑施工中必不可少的设施&#xff0c;由于塔吊工作重心高、起重载荷大、人工视距/视角受限等因素&#xff0c;也使得塔吊在工作过程中着较多的危险因素。对此&#xff0c;可以部署基于工业5G智能网关搭建智慧塔吊安全监测系统&#xff0c;实现对塔吊运行的全局精细监测感…

电机控制——底软需求

PWM 电机控制输出六路PWM&#xff0c;可分为ABC三相&#xff0c;每相包含上桥和下桥两路&#xff0c;上下桥不可同时打开。 配置的时候&#xff0c;六路PWM要设置为居中对齐模式&#xff0c;正好可以实现PMSM七段式控制法。 配置一路PWM作为基准&#xff0c;六路PWM都引用该基…

YOLOv5 目标计数 | 图片上绘制计数结果

修改方法: 只需要改 detect.py for path, im, im0s, vid_cap, s in dataset: 下新增一行 class_counts = {} class_counts[int(c)] = class_counts.get(int(c

makefile教程(1)

makefile教程 makefile是什么&#xff1a; makefile是用户自行完成的IDE&#xff08;integrated development environment集成开发环境&#xff09;程序&#xff0c;与传统的操作系统下的编译不同&#xff0c;makefile可以通过用户自行安排&#xff0c;决定文件的编译顺序&am…

【Java动态代理如何实现】

✅Java动态代理如何实现 ✅JDK动态代理和Cglib动态代理的区别 ✅拓展知识仓✅静态代理和动态代理的区别✅动态代理的用途✅Spring AOP的实现方式&#x1f4d1;JDK 动态代理的代码段&#x1f4d1;Cglib动态代理的代码块 ✅注意事项&#xff1a; 在Java中&#xff0c;实现动态代理…

泛微OA xmlrpcServlet接口任意文件读取漏洞(CNVD-2022-43245)

CNVD-2022-43245 泛微e-cology XmlRpcServlet接口处存在任意文件读取漏洞&#xff0c;攻击者可利用漏洞获取敏感信息。 1.漏洞级别 中危 2.影响范围 e-office < 9.5 202201133.漏洞搜索 fofa 搜索 app"泛微-OA&#xff08;e-cology&#xff09;"4.漏洞复现 …

大模型做实体识别任务的原理

1、背景 命名实体识别&#xff08;named entity recognition&#xff0c;NER&#xff09;&#xff1a;通常是一个序列标注的任务&#xff0c;常见的模型框架有&#xff1a;LSTM-CRF、BERTBILSTMCRF等&#xff0c;该种任务通常被成为flat NER即&#xff1a;每一个token只分配一…

视频号小店需要多少资金?

我是电商珠珠 视频号团队自22年发展视频号小店以来&#xff0c;为人所知。和抖音电商一样&#xff0c;都是在发展的第二年掀起了浪花。 也就是今年&#xff0c;很多想要入驻的新手&#xff0c;对于视频号小店不太了解&#xff0c;不清楚到底需要多少资金。 今天&#xff0c;…