MongoDB | 运算符 —— 查询(query)与投影(projection)运算符 (16.1)

本文详细介绍了MongoDB中的各类运算符,包括比较运算符、逻辑运算符、元素查询运算符等,以及如何利用这些运算符进行高效的数据查询和处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

16.运算符

16.1.查询(query)与投影(projection)运算符

16.1.1比较运算符

16.1.2.逻辑运算符

16.1.3.元素查询运算符

16.1.4.求值查询运算符

16.1.5.地理空间查询运算符

16.1.6.数组查询运算符

16.1.7.按位查询运算符

16.1.8.投影运算符


16.运算符

16.1.查询(query)与投影(projection)运算符

16.1.1比较运算符

查询操作符含义 
{field:{$eq:value}}匹配字段field值等于指定值value的文档比较运算符
{field:{$gt:value}}匹配字段field值大于指定值value的文档
{field:{$gte:value}}匹配字段field值≥指定值value的文档
{field:{$lt:value}}匹配字段field值<指定值value的文档
{field:{$lte:value}}匹配字段field值≤指定值value的文档
{field:{$ne:value}}匹配字段field值≠指定值value的文档
{field:$in:[value1,value2,...]}匹配字段field值 in 指定数组中的value值的文档
{field:$nin:[value1,value2,…]}匹配字段field值 not in 指定数组中的value值的文档

16.1.2.逻辑运算符

{$or:[expression1,expression2,...]}对两个或多个expressions的数组执行逻辑 或 操作逻辑运算符
{$and:[expression1,expression2,...]}对两个或多个expressions的数组执行逻辑 且 操作
{$nor:[expression1, expression2, ...]}对两个或多个expressions的数组执行逻辑 且 操作,并选择数组中所有表达式均失败的文档
{field:{$not:{$gt:1.99}}}选择字段field的值不大于1.99的文档

16.1.3.元素查询运算符

{field:{$exists:boolean, ...}}匹配是否包含字段field的文档元素查询运算符
{field:{$type:[type1, type2, ...]}}匹配字段field数据类型为数组中type的文档

16.1.4.求值查询运算符

{$expr:{$gt:["$field1, $field2"]}}匹配字段field1的值大于字段field2的值的文档求值查询运算符
{$jsonSchema:<JSON Schema object>}匹配满足制定JSON架构的文档
{field:{$mod:[divisor, remainder]}}选择字段field值除以 divisor 后具有指定 remainder 的文档(即执行模运算以选择文档)
{field:/pattern/<options>}为查询中的模式匹配字符串提供正则表达式功能(options:[i:大小写不敏感,m:全匹配,x:忽略pattern中
空白字符及#注释,s:允许点字符匹配所有字符且包括换行符])
{$text:{$search:<string>,$language:<string>,$caseSensitive:<boolean>,$diacriticSensitive:<boolean>}}对用文本索引索引的字段的内容执行文本搜索($search:待检索文本,$language:检索的语言,$caseSensitive:是否区分大小写,$diacriticSensitive:是否区分音调)
{$where:function(){return (fuc(this.name) == "9b53e667f30cd329dca1ec9e6a83e994")}}使用$where运算符将包含JavaScript表达式的字符串或完整的JavaScript函数传递给查询系统.(javascript函数有28种)

16.1.5.地理空间查询运算符

{<location field>:{$geometry:{type:<"Polygon" or "MultiPolygon">,coordinates:[<coordinates>]}}}选择具有完全位于指定形状内的地理空间数据的文档。地理空间查询运算符
{<location field>:$geoIntersects:{{$geometry:{type:<"Polygon" or "MultiPolygon">,coordinates:[<coordinates>]}}}}选择地理空间数据与指定的GeoJSON对象相交的文档
{<location field>:{$near:{$geometry:{type:"Point",coordinates:[<longitude>,<latitude>]},$maxDistance:<distance in meters>, $minDistance:<distance in meters>}}}指定地理空间查询从最近到最远返回文档的点
{$nearSphere:{$geometry:{type:"Point", coordinates:[<longitude>,<latitude>]},$minDistance:<distance in meters>,$maxDistance:<distance in meters>}}指定球面地理空间查询从最近到最远返回文档的点
{$geometry:type:<GeoJSON object type>,coordinates:[<coordinates>]}$geometry操作符与以下地理空间查询操作符一起使用:$geoWithin、$geoIntersects、$near和$nearSphere。
$minDistance:<distance in meters>将地理空间$near或$nearSphere查询的结果过滤到距中心点至少指定距离的文档
$maxDistance:<distance in meters>将地理空间$near或$nearSphere查询的结果过滤到距中心点至多指定距离的文档
{<location field>:{$geoWithin:{$center:[[<x>,<y>],<radius>]}}}$center操作符为$geoWithin查询指定一个圆。该查询返回圆形范围内的遗留坐标对
{<location field>:{$geoWithin:{$centerSphere:[[<x>,<y>],<radius>]}}}为使用球面几何图形的地理空间查询定义圆。查询返回圆边界内的文档
{<location field>:{$geoWithin:{$box:[[<bottom left coordinates>],[<upper right coordinates>]]}}}为地理空间$geoWithin查询指定一个矩形,以根据其基于点的位置数据返回矩形边界内的文档
{<location field>:{$geoWithin:{$polygon:[[<x1>,<y2>],...]}}}为遗留坐标对上的地理空间$geoWithin查询指定一个多边形。查询返回多边形范围内的对

16.1.6.数组查询运算符

{field:{$all:[<value1>,<values2>,...]}}匹配字段field包含查询中指定的所有元素的数组数组查询运算符
{field:{$all:[{$elemMatch:{}},{$elemMatch:{}},...]}}匹配字段field包含查询中指定的所有元素($elementMatch)的数组
{field:{$elemMatch:{<query1>,<query2>,...}}}$elemMatch运算符匹配数组字段其中至少有一个元素与所有指定的查询条件匹配,并返回文档
{field:{$size:<num of elemets>}}$size运算符将任何数组与参数指定的元素数相匹配

16.1.7.按位查询运算符

{field:{$bitsAllClear:[<position1>,<position2>,...]}}$bitsAllClear匹配字段中查询给出的所有位置(可以是十进制数、BinData实例)都是0的文档(位置形式:…3210)按位查询运算符
{field:{$bitsAllSet:[<position1>,<position2,...>]}}$bitsAllClear匹配字段中查询给出的所有位置(可以是十进制数、BinData实例)都不为0的文档(位置形式:…3211)
{field:{$bitsAnyClear:[<position1>,<position2>,...]}}$bitsAllClear匹配字段中查询给出的所有位置(可以是十进制数、BinData实例)至少一个为0的文档(位置形式:…3212)
{field:{$bitsAnySet:[<position1>,<position2>,...]}}$bitsAllClear匹配字段中查询给出的所有位置(可以是十进制数、BinData实例)至少一个不为0的文档(位置形式:…3213)
{<query>,$comment:<comment>}为当前查询添加注释

16.1.8.投影运算符

{<array>:<value>...},{<array>.$:1}定位$操作符将查询结果中的<array>的内容限制为只包含与查询文档匹配的第一个元素。</array>若要指定要更新的数组元素,请参阅有关更新的位置$运算符投影运算符
{field:{$elemMatch:{field.field:{<query>}}}}$elemMatch运算符将查询结果中<array>字段的内容限制为仅包含与$elemMatch条件匹配的第一个元素
{$text:{}},{$score:{$meta:"textScore"}.sort({score:{$meta:"textScore"}}).limit(num)①$meta投影操作符为每个匹配的文档返回与查询关联的元数据
②返回与每个匹配文档的相应$text查询相关联的分数。文本得分表示文档与搜索项或多个搜索项的匹配程度。如果不与$text查询一起使用,则返回0分
{field:value},{<array>:{$slice:[skip, limit]}}$slice操作符控制查询返回的数组的项数。有关在使用$push更新期间限制数组大小的信息,请参阅$slice修饰符(skip:跳过的项数,limit:返回数组的项数)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

博士僧小星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值