赞
踩
MatchExpression 是查询过程的第一步, 它是由一个Bson生成的, 根据bson的的各种设定, 产生一个树
型的expression结构, 该树形结构中的节点是有一个个的查询操作符。 理解和掌握Mongodb里面第一的操作
符的类型和属性, 是掌握MatchExpression的关键。
syntax: {field: {$eq: xxx}}
syntax :
{field: { $gt: xxx } };
{field: {$gte: xxx}};
syntax:
{ field: { $in: [value1, value2, … valueN ] } }
找到文档包含value1,value2,… valueN 中的其中一个;
这里的值可以是正则表达式, 但是不能包含$regex 操作符;
syntax : {field: {$lt: xxx}}
syntax : {field: {$lte: xxx}}
Syntax: {field: {$ne: value} }
- 文档的field不等于value;
- 文档不包含field;
Syntax: { field: { $nin: [ value1, value2 … valueN ]} }
- field 的值不等于value1, … valueN;
- 文档不包含field
Syntax: { $and: [ { expression1 }, { expression2 } , … , { expressionN } ] }
Syntax: { $or: [ { expression1 }, { expression2 }, … , { expressionN } ] }
Syntax: { field: { $not: { operator-expression } } }
Syntax : { $nor: [ { expression1 }, { expression2 }, … { expressionN } ] }
Syntax: { field: { $exists: boolean } }
Syntax: { field: { $type: BSON type number | String alias } }
- bson 支持的类型
Type | Number | Alias | Notes |
---|---|---|---|
Double | 1 | “double” | |
String | 2 | “string” | |
Object | 3 | “object” | |
Array | 4 | “array” | |
Binary data | 5 | “binData” | |
Undefined | 6 | “undefined” | Deprecated. |
ObjectId | 7 | “objectId” | |
Boolean | 8 | “bool” | |
Date | 9 | “date” | |
Null | 10 | “null” | |
Regular Expression | 11 | “regex” | |
DBPointer | 12 | “dbPointer” | Deprecated. |
JavaScript | 13 | “javascript” | |
Symbol | 14 | “symbol” | Deprecated. |
JavaScript (with scope) | 15 | “javascriptWithScope” | |
32-bit integer | 16 | “int” | |
Timestamp | 17 | “timestamp” | |
64-bit integer | 18 | “long” | |
Decimal128 | 19 | “decimal” | New in version 3.4. |
Min | key | -1 | “minKey” |
Max | key | 127 | “maxKey” |
Syntax: { field: { $mod: [ divisor, remainder ] } }
Syntax:
{ : {
{ : {
{ : { $regex: /pattern/ } }
等价于: { : /pattern/ }
不能再
{
$text:
{
$search: <string>,
$language: <string>,
$caseSensitive: <boolean>,
$diacriticSensitive: <boolean>
}
}
Syntax: {$where : “Javascript line or func”}
没有研究过, 跳过
Syntax: { field: { $all: [ value1 , value2 … ] } }
Syntax: { field: { $elemMatch: { query1, query2, … } } }
Syntax: { field: { $size: NUM} }
Syntax:
{ field: { $bitsAllClear: numeric_bitmask } };
{ field: { $bitsAllClear: BinData bitmask } };
{ field: { $bitsAllClear: [ position1, position2, … ] } };
找到文档其在指定的bit都是0(clear)或者1(set);
Syntax:
{ field: { $bitsAnyClear: numeric bitmask } }
{ field: { $bitsAnyClear: BinData bitmask } }
{ field: { $bitsAnyClear: [ position1, position2, … ] } }
与
Syntax: { query, $comment: comment }
db.collection.find( { <array>: <value> ... },
{ "<array>.$": 1 } )
db.collection.find( { <array.field>: <value> ...},
{ "<array>.$": 1 } )
syntax
{ query, { field: { $elemMatch: { sub_query1, subquery2, …, sub_queryN } }
匹配所有满足sub_query的文档, 如果一个数组有N 个element, 其中有2个满足sub_query, 就只需要打印这两个elements;
Syntax:
{ array: {$slice: limit } }
{ array: {$slice: [skip, limit] } }
整数代表从头计算, 负数表示从后向前;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。