mongodb查询

MongoDB 条件操作符的使用 本文档为个人博客文档系统的备份版本、作者:小游、作者博客:点击访问 条件操作符用于比较两个表达式并从mongoDB集合中获取数据。 在本章节中,我们将讨论如何在MongoDB中使用条件操作符。 MongoDB中条件操作符有: (>) 大于 - $gt (<) 小于 - $lt (>=) 大于等于 - $gte (<= ) 小于等于 - $lte 我们使用的数据库名称为"runoob" 我们的集合名称为"col",以下为我们插入的数据。 为了方便测试,我们可以先使用以下命令清空集合. 阅读详情
1 ) . 大于,小于,大于或等于,小于或等于

$gt:大于
$lt:小于
$gte:大于或等于
$lte:小于或等于

例子:

db.collection.find({ "field" : { $gt: value } } ); // greater than : field > value
db.collection.find({ "field" : { $lt: value } } ); // less than : field < value
db.collection.find({ "field" : { $gte: value } } ); // greater than or equal to : field >= value
db.collection.find({ "field" : { $lte: value } } ); // less than or equal to : field <= value

如查询j大于3,小于4:

db.things.find({j : {$lt: 3}});
db.things.find({j : {$gte: 4}});

也可以合并在一条语句内:

db.collection.find({ "field" : { $gt: value1, $lt: value2 } } ); // value1 < field < value

2) 不等于 $ne

例子:

db.things.find( { x : { $ne : 3 } } );



3) in 和 not in ($in $nin)

语法:
db.collection.find( { "field" : { $in : array } } );

例子:

db.things.find({j:{$in: [2,4,6]}});
db.things.find({j:{$nin: [2,4,6]}});


4) 取模运算$mod

如下面的运算:
db.things.find( "this.a % 10 == 1")

可用$mod代替:

db.things.find( { a : { $mod : [ 10 , 1 ] } } )


5)  $all

$all和$in类似,但是他需要匹配条件内所有的值:

如有一个对象:

{ a: [ 1, 2, 3 ] }

下面这个条件是可以匹配的:

db.things.find( { a: { $all: [ 2, 3 ] } } );

但是下面这个条件就不行了:

db.things.find( { a: { $all: [ 2, 3, 4 ] } } );

6)  $size

$size是匹配数组内的元素数量的,如有一个对象:{ a:["foo"] },他只有一个元素:

下面的语句就可以匹配:db.things.find( { a : { $size: 1 } } );

官网上说不能用来匹配一个范围内的元素,如果想找$size<5之类的,他们建议创建一个字段来保存元素的数量。

You cannot use $size to find a range of sizes (for example: arrays with more than 1 element). If you need to query for a range, create an extra size field that you increment when you add elements.

7)$exists

$exists用来判断一个元素是否存在:

如:

db.things.find( { a : { $exists : true } } ); // 如果存在元素a,就返回
db.things.find( { a : { $exists : false } } ); // 如果不存在元素a,就返回

8)  $type

$type 基于 bson type来匹配一个元素的类型,像是按照类型ID来匹配,不过我没找到bson类型和id对照表。

db.things.find( { a : { $type : 2 } } ); // matches if a is a string
db.things.find( { a : { $type : 16 } } ); // matches if a is an int
9)正则表达式

mongo支持正则表达式,如:

db.customers.find( { name : /acme.*corp/i } ); // 后面的i的意思是区分大小写

10)  查询数据内的值

下面的查询是查询colors内red的记录,如果colors元素是一个数据,数据库将遍历这个数组的元素来查询。db.things.find( { colors : "red" } );

11) $elemMatch

如果对象有一个元素是数组,那么$elemMatch可以匹配内数组内的元素:

> t.find( { x : { $elemMatch : { a : 1, b : { $gt : 1 } } } } ) 
{ "_id" : ObjectId("4b5783300334000000000aa9"), 
"x" : [ { "a" : 1, "b" : 3 }, 7, { "b" : 99 }, { "a" : 11 } ]
}$elemMatch : { a : 1, b : { $gt : 1 } } 所有的条件都要匹配上才行。

注意,上面的语句和下面是不一样的。

> t.find( { "x.a" : 1, "x.b" : { $gt : 1 } } )
$elemMatch是匹配{ "a" : 1, "b" : 3 },而后面一句是匹配{ "b" : 99 }, { "a" : 11 } 


12)  查询嵌入对象的值

db.postings.find( { "author.name" : "joe" } );

注意用法是author.name,用一个点就行了。更详细的可以看这个链接: dot notation

举个例子:

> db.blog.save({ title : "My First Post", author: {name : "Jane", id : 1}})

如果我们要查询 authors name 是Jane的, 我们可以这样:

> db.blog.findOne({"author.name" : "Jane"})

如果不用点,那就需要用下面这句才能匹配:

db.blog.findOne({"author" : {"name" : "Jane", "id" : 1}})

下面这句:

db.blog.findOne({"author" : {"name" : "Jane"}})

是不能匹配的,因为mongodb对于子对象,他是精确匹配。

13) 元操作符 $not 取反

如:

db.customers.find( { name : { $not : /acme.*corp/i } } );db.things.find( { a : { $not : { $mod : [ 10 , 1 ] } } } ); mongodb还有很多函数可以用, 如排序,统计等,请参考原文。

mongodb目前没有或(or)操作符,只能用变通的办法代替,可以参考下面的链接:

http://www.mongodb.org/display/DOCS/OR+operations+in+query+expressions
MongoDB系列之详细查询 前段时间项目中用到了MongoDB,上一篇文章介绍了MongoDB的增删改查,今天来介绍一下MongoDB更详细的查询语句。 阅读详情

相关推荐

(35)远程识别(又称无人机识别)(一)

Ardupilot官网关于《Peripheral Hardware》的翻译 —《(35) 远程识别(又称无人机识别)》。

无人机开发(开源Ardupilot) 4万+

MongoDB查询的语法

mongodb查询的语法本文参考自官方的手册:http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-ConditionalOperators%3A%3C%2C%3C%3D%2C%3E%2C%3E%3D1 ) . 大于,小于,大于或等于,小于或等于$gt:大于$lt:小于$gte:大于或等于$lte:小于或...

axpbiledjpihry3234的博客 1392

Nuvoton OpenTitan开源安全芯片技术解析与应用

硬件安全模块(HSM)作为可信计算基的核心组件,其设计透明度和可验证性正成为行业焦点。RISC-V架构凭借开源特性,为构建可审计的安全芯片提供了新范式。OpenTitan项目通过开放Verilog源码和形式化证明,实现了从物理不可克隆函数(PUF)到分层安全启动的全栈透明。该方案在lowRISC Voyager开发板上实测显示,安全启动时间小于200ms,性能损耗仅7%,显著优于传统黑盒方案。目前该技术已应用于Chromebook和数据中心,其40nm工艺版本更将功耗降至5μA待机水平,为物联网和边缘计算提

weixin_36303807的博客 397

mongodb不等于某个值_mongodb之查询操作

在上一篇mongodb之remove操作中详细介绍了常用的字段更新操作符,工作中最常用的就是mongodb中各种复杂的查询,在关系型数据库中,可以实现基于表的各种各样的查询,以及通过投影来返回指定的列,相应的查询功能也可以在 MongoDB 中实现。同时由于 MongoDB 支持嵌套文档和数组,MongoDB 也可以实现基于嵌套文档和数组的查询,下面我们详细介绍mongodb中功能丰富的查询。 1. find 说明: 选择集合中的文档,并按照查询条件返回到所选文档。 语法: db.collecti

xulong5000的专栏 5817

本地部署开源视频会议解决方案 Jitsi Meet 并实现外网访问

Jitsi Meet 是一款基于 WebRTC 技术的开源视频会议解决方案,它允许用户通过互联网进行高质量的视频通话、语音通话和文本聊天,非常适合用于在线教育、远程办公、团队协作等场景。本文将详细介绍如何利用 Docker 在本地部署 Jitsi Meet 并结合路由侠实现外网访问本地部署的 Jitsi Meet。

lyxnwct的博客 1945

微信小程序如何集成EasyRTC实现零插件音视频通话?5步搞定完整接入流程

本文详细介绍了如何在微信小程序中集成EasyRTC SDK,实现零插件的实时音视频通话功能。通过5个关键步骤,包括环境配置、SDK初始化、核心功能实现、性能优化和问题排查,帮助开发者快速完成WebRTC技术在小程序中的落地应用,解决微信小程序原生不支持实时音视频通信的技术难题。

weixin_28340315的博客 143

MongoDB 基操教程(四) AND、OR、大于、小于、等于条件查询

现在,MongoDB 里有这一些数据: AND 查询 我们想要查找库里面 name 的值为 q1 同时 age 是20 的数据,使用 AND 连接符,查询方式如下: db.test.find({'name':'q1', 'age':20}) OR 查询 查询库里 name 为 q1 或者 age 为 23 的数据: db.test.find({$or: [{'name': 'q1'}, {'age': 23}]}) 大于、小于、等于 大于等于: $gte 大于:$gt 小于等于:$lte 小于: $l

海里鱼的技术博客 5789

大模型选型实战:为OpenClaw匹配最优“大脑”的全维度考量

大模型不是越贵越好,也不是参数越高越好,适合自己的使用场景才是最好的。按照我的方法,先明确自己的需求,再选对应的模型,配置多模型自动路由,既能保证体验,又能最大限度降低成本。我自己用这套配置用了半年多,不管是写文章、写代码还是处理复杂问题,都完全够用,成本也很低,大家可以参考一下。如果不知道选什么模型,可以在评论区说一下你的使用场景。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 343

MongoDB条件操作符(大于,小于等)模糊查询,类型查询符(七)

当用find显示文档时是显示全部,当文档足够多,而自己需要的只是满足某些值的文档,如果还用find 就太浪费资源了 MongoDB中条件操作符有: (>) 大于 - $gt (<) 小于 - $lt (>=) 大于等于 - $gte (<= ) 小于等于 - $lte 大于(>)操作符 先查看数据 > db.col.find() { "_id" : Ob...

胖墩的IT博客 1万+

Openclaw 错误分析 与 解决方案 之:Selected model is at capacity. Try a different model, or wait and retry.

Openclaw 错误分析 与 解决方案 :Selected model is at capacity. Try a different model, or wait and retry.

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 6415

28、数字电路测试与半导体内存测试全解析

本文全面解析了数字电路中的顺序电路测试生成方法与半导体内存测试技术。内容涵盖顺序电路中的故障检测、多重观察测试、可驱动性分析、伪组合电路测试及初始化问题,并深入探讨了内存技术发展、故障模型、测试流程与未来趋势。重点介绍了DRAM、SRAM等主流内存类型的特点,以及制造和使用过程中面临的永久性与非永久性故障挑战,提出了基于故障模型的高效测试策略与优化方案。

go5gopher的博客 122

MongoDB查询

前面的{}中为匹配条件,后面{}中的为要显示的键值,1为显示,由于_id是默认会显示的,可以通过0来不显示。更加复杂的查询,“$elemMatch”对内嵌文档进行分组,只有在对一个内嵌文档中的多个键操作时才会用到。null可以将值等于空的匹配出来,也可以将没有这个键的文档匹配出来。skip会跳过定义的前面的匹配数量,下面为不显示前三个的文档。比如查询一个数值范围,大于等于5,小于等于12的。or”更加通用,可以在多个键中查询给定的值。类似的还有“$nin”,代表不包含。可以用来查询一个键的多个值,

weixin_43539320的博客 1968

Scale-up,scale-out技术概述

本文系统分析了Scale-up与Scale-out两种扩展技术在现代计算中的应用与发展。Scale-up通过增强单节点性能,适用于高耦合任务,而Scale-out通过横向扩展节点,实现高可用性和无限扩展。在芯片层面,Chiplet技术推动Scale-up发展;在数据中心层面,二者协同工作构建强大集群。光模块在长距离高带宽传输中发挥关键作用。文章对比了NVIDIA、AMD和Broadcom三家公司的技术路线,指出NVIDIA采用封闭生态,AMD选择开放标准,Broadcom则主导底层连接技术。未来发展方向将聚

元直的博客 1446

Mongodb常用查询

Mongodb是文档型数据库,每条数据为一个document记录,很多个文档记录组成一个集合(即:结构化数据库中的表)。数据库通过键、值来存储数据(即:字段、字段值),因为每条记录被存储在一个文档中,所以每条记录可以有不同的键,相同的键可以有不同数据类型的值,比如:age可以存储数:3,字符串:5岁。数据库的“键”的命名区分大小写、顺序,比如:name、Name是两个不同的键。Mongodb内嵌shell脚本,支持javascript语法。db是全局变量,通过shell访问数据库的入口。

ccysjy的博客 2万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

MongoDB数组查询

在数组元素上指定复合条件时,您可以指定查询,使得单个数组元素满足这些条件或数组元素的任意组合满足条件。使用点表示法,您可以在数组的特定索引或位置指定元素的查询条件。算符对数组元素指定多个条件,以使至少一个数组元素满足所有指定条件,条件之间的关系是。例如,以下选择数组标签具有 3 个元素的文档。数组包含以某种组合满足查询条件的元素的文档,多个条件之间的关系是。要查询数组字段是否包含至少一个具有指定值的元素,请使用过滤器。的数组,但不考虑数组中的顺序或其他元素,请使用。是要匹配的确切数组,包括元素的顺序。...

魏大大 8298

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MongoDB查询操作详解

MongoDB是一个流行的NoSQL数据库,以其灵活的数据模型和强大的查询功能而闻名。本文将深入探讨MongoDB的查询操作,包括基本查询、条件查询、聚合查询以及一些高级查询技巧,帮助你充分利用MongoDB的查询能力。

My_wife_QBL的博客 4510

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

MongoDB的查询语法

MongoDB的查询语法

weixin_45323426的博客 8322

[mongodb][查询]MongoDb查询和模糊查询

在MongoDB中,您提供的查询示例使用了不同的查询操作符来执行不同类型的查询。这个查询使用了正则表达式来模糊匹配name字段。表示匹配任何包含"HLCSOU17649"(不区分大小写,由i标志指定)的字符串。这种查询对于查找字段值包含特定模式的文档非常有用。这个查询使用了$gte(大于等于)和$lte(小于等于)操作符来选择date字段在指定日期范围内的文档。这里的日期使用ISODate格式,确保了时间的准确性。

一名不太专业的程序员 7092

MongoDB 查询

1、查询所有数据 数据准备 db.inventory.insertMany([ { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" }, { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A"...

weixin_38932035的博客 1574

MongoDB查询总结

前面写过一篇关于Mongodb的例子——浅谈MongoDB数据库,当时使用的只是简单的查询,然后后面业务变的有点复杂,原先没有仔细研究过Mongodb的查询,以为就是简单调用下find就可以了,乃衣服。

流水不腐小夏 1233

mongodb查询语句_MongoDB常用27条查询语句

最近测试用到了MongoDB,小酋也抓紧学习了一把,这里汇总了常用的27条MongoDB查询语句:1、查询所有记录db.userInfo.find();相当于:select* from userInfo;默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据。注意:键入it命令不能带“;”但是你可以设置每页显示数据的大小,用DBQuery.shellBatchSiz...

weixin_39949506的博客 1628

MongoDB使用查询总结

查询工具:Robo 3T。 下载地址:https://robomongo.org/ 1.基本查询 //基本查询一条记录 db.qtfm__album_info.findOne() //多条件查询(相当于where) db.qtfm_album_info.find({"name":"七里香","author":"周杰伦"}) //只返回主键和指定得文档键值对 db.qtfm_album_info.find({},{"name":1,"author":1}) //指定不返回得键值对(0、1为boolea

qsya的博客 2378

MongoDB 之查询详解

查询就是获取存储在数据库中的数据。 在 MongoDB 中,查询通常针对一个集合来操作。查询可以指定查询条件,只返回匹配的文档;还可以指定投影项,只返回指定的字段,减少返回数据到客户端的网络流量。 1、MongoDB 查询文档使用 find() 方法。 find() 方法以非结构化的方式来显示所有文档。 语法 MongoDB 查询数据的语法格式如下: db.collection.find(query, projection) 参数说明: query :可选,使用查询操作符指定查询条件。 projection

zp17834994071的博客 2332

Mongodb查询语法

##Mongodb查询语法 一.查询文档 本段提供了使用 mongo shell中 db.collection.find() 方法查询的案例。案例中使用的 inventory 集合数据可以通过下面的语句产生。 db.inventory.insertMany([ { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" }, { item: "notebook", qty: 50, size: { h: 8

weixin_38365121的博客 4739
上一篇: python 中文乱码 问题深入分析
下一篇: Mongo管理命令
CsharpGame
博客等级 码龄21年 11粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值