查询操作符
前言
一、对比
1.1 $eq
$eq
匹配等于指定值的值。
1.2 $gt
$gt
匹配大于指定值的值。
1.3 $lt
$lt
匹配小于指定值的值。
1.4 $in
$in
匹配数组中指定的任何值。
1.5 $ne
$ne
匹配所有不等于指定值的值。
1.6 $gte
$gte
匹配大于等于指定值的值。
1.7 $lte
$lte
匹配小于等于指定值的值。
1.8 $nin
$nin
不匹配数组中指定的任何值。
二、逻辑
2.1 $or
$or
使用逻辑 OR
连接多个查询子句会返回符合任一子句条件的所有文档。
2.2 $and
$and
使用逻辑 AND
连接查询子句将返回与两个子句的条件匹配的所有文档。
2.3 $not
$not
反转查询谓词的效果,并返回与查询谓词不匹配的文档。
2.4 $nor
$nor
使用逻辑 NOR
的联接查询子句会返回无法匹配这两个子句的所有文档。
三、字段
3.1 $type
$type
如果字段为指定类型,则选择文档。
3.2 $exists
$exists
匹配具有指定字段的文档。
四、求值
4.1 $mod
$mod
对字段值执行模运算,并选择具有指定结果的文档。
4.2 $expr
$expr
允许在查询语言中使用聚合表达式。当 $expr
出现在属于 $lookup
子管道的 $match
阶段时, $expr
可以引用 $lookup
阶段定义的 let
变量。
语法
{ $expr: { <expression> } }
- 参数可以是任何有效的表达式。
用法
使用 $expr
来使用聚合表达式, 比较同一文档中的两个字段: 使用 $expr
可以使用聚合表达式, 进而可以访问同文档中的字段值, 来比较同一文档中的两个字段。
db.monthlyBudget.insertMany( [
{ _id : 1, category : "food", budget : 400, spent : 450 },
{ _id : 2, category : "drinks", budget : 100, spent : 150 },
{ _id : 3, category : "clothes", budget : 100, spent : 50 },
{ _id : 4, category : "misc", budget : 500, spent : 300 },
{ _id : 5, category : "travel", budget : 200, spent : 650 }
] );
db.monthlyBudget.find( { $expr: { $gt: [ "$spent" , "$budget" ] } } ); // 以下操作使用 $expr 来查找 spent 金额超过 budget 的文档。 注意: 这里的 $gt 不是查询操作符, 是聚合操作符。
4.3 $text
$text
执行文本搜索。$text
提供了自管理(非 Atlas
)部署的文本查询功能。对于托管在 MongoDB Atlas
上的数据,MongoDB
提供了一种改进的全文查询解决方案,Atlas Search
。
4.4 $regex
$regex
选择值匹配指定正则表达式的文档。
4.5 $where
$where
匹配满足 JavaScript
表达式的文档。
4.6 $jsonSchema
$jsonSchema
根据给定的 JSON
模式验证文档。
五、数组
5.1 $all
$all
匹配包含查询中指定的所有元素的数组。
5.2 $size
$size
如果数组字段达到指定大小,则选择文档。
5.3 $elemMatch
$elemMatch
如果数组字段中的元素与所有指定的 $elemMatch
条件均匹配,则选择文档。
六、投影
6.1 $
$
对数组中与查询条件匹配的第一个元素进行投影。
6.2 $meta
$meta
预测在 $text
操作中分配的文件分数。
6.3 $slice
$slice
限制从数组中投影的元素数量。支持跳过切片和对切片进行数量限制。
6.4 $elemMatch
$elemMatch
对数组中与指定 $elemMatch
条件匹配的第一个元素进行投影。
七、地理空间
7.1 $near
返回接近某个点的地理空间对象。需要地理空间索引。2dsphere
和 2d
索引支持 $near
。
7.2 $geoWithin
$geoWithin
选择在边界 GeoJSON
几何图形内的几何图形。2dsphere
和 2d
索引支持 $geoWithin
。
7.3 $nearSphere
$nearSphere
返回与球面上的某个点接近的地理空间对象。需要地理空间索引。2dsphere
和 2d
索引支持 $nearSphere
。
7.4 $geoIntersects
$geoIntersects
选择与 GeoJSON
几何图形相交的几何图形。2dsphere
索引支持 $geoIntersects
。