MatchExpression(1): 查询操作符
来源:互联网 发布:美团点评大数据曾阳 编辑:程序博客网 时间:2024/05/03 20:00
MatchExpression 是查询过程的第一步, 它是由一个Bson生成的, 根据bson的的各种设定, 产生一个树 型的expression结构, 该树形结构中的节点是有一个个的查询操作符。 理解和掌握Mongodb里面第一的操作 符的类型和属性, 是掌握MatchExpression的关键。
比较查询操作符
相等 $eq
syntax: {field: {$eq: xxx}}
- xxx 是一个具体的值, 等价于: {field:xxx}
- xxx 是一个array的某一个elem [xxx]: 等价于: {field:xxx};
- xxx 是一个 array [xxx, yyy],需要完全匹配, 顺序和K/v;
大于 gt或者大于等于 gte
syntax :
{field: { $gt: xxx } };
{field: {$gte: xxx}};
包含于 $in
syntax:
{ field: { $in: [value1, value2, … valueN ] } }
找到文档包含value1,value2,… valueN 中的其中一个;
这里的值可以是正则表达式, 但是不能包含$regex 操作符;
小于 lt或者小于等于 lte
syntax : {field: {$lt: xxx}}
syntax : {field: {$lte: xxx}}
不等于 $ne
Syntax: {field: {$ne: value} }
- 文档的field不等于value;
- 文档不包含field;
不包含在 $nin
Syntax: { field: { $nin: [ value1, value2 … valueN ]} }
- field 的值不等于value1, … valueN;
- 文档不包含field
逻辑查询操作符
逻辑与 $and
Syntax: { $and: [ { expression1 }, { expression2 } , … , { expressionN } ] }
- 文档必须同时满足 expression1, expression2, … expressionN;
- 除了显式的, 还有隐含的$and 用法;
逻辑或 $or
Syntax: { $or: [ { expression1 }, { expression2 }, … , { expressionN } ] }
- 如果所有的
orexpression都支持index,整个 or 使用index; - 如果
or包含 text, 所有的sub-expression必须支持索引; - 如果要判断某个field在某个集合内, 尽量使用$in;
逻辑非 $not
Syntax: { field: { $not: { operator-expression } } }
- $not 必须和其他的操作符一起使用;
not不能和 regex一起使用
逻辑异或 $nor
Syntax : { $nor: [ { expression1 }, { expression2 }, … { expressionN } ] }
Element query operators
是否存在 $exists
Syntax: { field: { $exists: boolean } }
过滤类型 $type
Syntax: { field: { $type: BSON type number | String alias } }
- bson 支持的类型
evaluate query operators
取模 $mod
Syntax: { field: { $mod: [ divisor, remainder ] } }
- divisor: 除数, reminder:余数;
- 该操作符必须有两个参数;
正则表达式 $regex
Syntax:
{ : {regex:/pattern/, options: ‘’ } }
{ : {regex:′pattern′, options: ‘’ } }
{ : { $regex: /pattern/ } }
等价于: { : /pattern/ }不能再
in中使用 regex;- options:
i: case-insensitive;
m: 当pattern内有‘^’ or ‘$’, 或者有换行的时候, 可以匹配多行的内容;
x: 忽略pattern内的空白字符;
s: 允许‘.’匹配所有的字符,包含换行符;
文本过滤 $text
- Syntax:
{ $text: { $search: <string>, $language: <string>, $caseSensitive: <boolean>, $diacriticSensitive: <boolean> }}
- FTS 专门用到文本过滤, 这里先搁置
$where
Syntax: {$where : “Javascript line or func”}
- javascript line or func 不能使用全局变量;
- $where 里面的语句不能使用index;
Geospatial Query Operators
没有研究过, 跳过
Array Query Operators
$all
Syntax: { field: { $all: [ value1 , value2 … ] } }
- 包含全部的value1, … valueN;
- 可以用$and 表示;
- 可以与$elemMatch 一起用
$elemMatch
Syntax: { field: { $elemMatch: { query1, query2, … } } }
- 找到文档包含array至少有一个element匹配所有的query;
- 如果只有一个query, 这个操作符不是必要的;
- query不能包含操作符$where;
$size
Syntax: { field: { $size: NUM} }
- 找到所有的文档包含array, 他与NUM个elements;
Bitwise Query Operators
bitsAllClear/ bitsAllSet
Syntax:
{ field: { $bitsAllClear: numeric_bitmask } };
{ field: { $bitsAllClear: BinData bitmask } };
{ field: { $bitsAllClear: [ position1, position2, … ] } };
找到文档其在指定的bit都是0(clear)或者1(set);
bitsAnyClear/ bitsAnySet
Syntax:
{ field: { $bitsAnyClear: numeric bitmask } }
{ field: { $bitsAnyClear: BinData bitmask } }
{ field: { $bitsAnyClear: [ position1, position2, … ] } }
与
bitsAllClear、 bitsAllSet 的区别: 任何一个指定的位是0, 就满足条件;
$comment
Syntax: { query, $comment: comment }
- 为查询添加comment;
projection operators
$(projection)
- Syntax:
db.collection.find( { <array>: <value> ... }, { "<array>.$": 1 } )db.collection.find( { <array.field>: <value> ...}, { "<array>.$": 1 } )
- 匹配文档的第一个位置的值, 其他的不要;
- 如果匹配的是一个array, 就显示array的第一个element;
$elemMatch (projection)
syntax
{ query, { field: { $elemMatch: { sub_query1, subquery2, …, sub_queryN } }匹配所有满足sub_query的文档, 如果一个数组有N 个element, 其中有2个满足sub_query, 就只需要打印这两个elements;
$meta
- syntax: { $meta: “textScore” }
$slice
Syntax:
{ array: {$slice: limit } }
{ array: {$slice: [skip, limit] } }
整数代表从头计算, 负数表示从后向前;
- MatchExpression(1): 查询操作符
- MatchExpression(2):实现
- LINQ查询操作符
- LINQ查询操作符
- c# LINQ查询操作符实例操作总结1
- LINQ标准查询操作符
- LINQ标准查询操作符
- mongodb的查询操作符
- mongodb的查询操作符
- MongoDB比较查询操作符
- MongoDB逻辑查询操作符
- MongoDB元素查询操作符
- C# LINQ查询操作符
- LINQ标准查询操作符
- MongoDB学习 (五):查询操作符(Query Operators).1st
- MongoDB学习 (五):查询操作符(Query Operators).1st
- MongoDB学习 (五):查询操作符(Query Operators).1st
- MongoDB学习 (五):查询操作符(Query Operators).1st
- Android 全屏情况下 webview中输入框被软件盘遮挡问题解决方案
- 调用高德地图、百度地图客户端
- Xcode真机调试包的路径
- spring 之 import标签、alias标签、beans标签 解析
- bootstrap table selectsingle
- MatchExpression(1): 查询操作符
- Unity Activity Background时,游戏切入后台再返回黑屏问题
- PCA 基本原理
- spring 循环依赖注入
- codeforces859C
- java中string和int互相转化
- 黄果树 5A级景区,5A级可视化指挥监控平台
- js中复制基本类型与复制引用类型值的区别
- Java多线程-新特性-线程池