常用查询操作符:
1、比较运算符
$eq:等于
db.stars.find({"name":"A-Lin"})
db.stars.find({"name":{"$eq":"A-Lin"}});
$gt:大于
db.stars.find({"age":{"$gt":30}})
$gte:大于等于
db.stars.find({"age":{"$gte":30}})
$lt:小于
db.stars.find({"age":{"$lt":30}})
$lte:小于等于
db.stars.find({"age":{"$lte":30}})
$ne:不等于
db.stars.find({"age":{"$ne":30}})
$in:查找数组范围内的指定值
db.stars.find({"age":{"$in":[22,40]}})
$nin:查找不在数组范围内的值
db.stars.find({"age":{"$nin":[22,40]}})
2、逻辑运算符
$or:或运算符,语法:
{ $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }
示例:
db.stars.find({"$or":[{"name":"A-Lin"},{"age":40}]});
$and:与运算符,语法:
{ $and: [ { <expression1> }, { <expression2> } , ... , { <expressionN> } ] }
示例
db.stars.find({"$and":[{"name":"A-Lin"},{"age":22}]});
$not:取反操作符,语法
{ field: { $not: { <operator-expression> } } }
示例
db.stars.find({"name":{"$not":{"$eq":"A-Lin"}}})
$nor:测试所有的查询条件,都失败的文档将会返回(类似于对数组中的查询条件做OR操作,然后取反),语法
{ $nor: [ { <expression1> }, { <expression2> }, ... { <expressionN> } ] }
示例
db.stars.find({"$nor":[{"name":"A-Lin"},{"age":"20"}]})
3、其他操作符
$exists:查询所有存在指定字段的文档,语法
{ field: { $exists: <boolean> } }
示例
db.stars.find({"age":{"$exists":true}})
$type:查询指定字段为指定类型的文档
db.stars.find({"age":{"$type":"double"}})
$mod:求余操作符,语法
{ field: { $mod: [ divisor, remainder ] } }
示例
//对4取模,余数为0 db.stars.find({"age":{"$mod":[4,0]}})
$regex:正则表达式,语法
{ <field>: { $regex: /pattern/, $options: '<options>' } } { <field>: { $regex: 'pattern', $options: '<options>' } } { <field>: { $regex: /pattern/<options> } }
简写语法
{ <field>: /pattern/<options> }
示例
//查找简介中含有女歌手关键字的文档 db.stars.find({"Desc":/女歌手/})
$text:全文检索,语法
{ $text: { $search: <string>, $language: <string>, $caseSensitive: <boolean>, $diacriticSensitive: <boolean> } }
$where:使用JavaScript语法查找文档
db.stars.find({"$where":function() { return this.age>=20; }})
4、数组操作符
$all:查找一个数组,该数组包含所有给定的值,语法
{ <field>: { $all: [ <value1> , <value2> ... ] } }
示例
db.stars.find({"tags":{"$all":["软妹子","女人味"]}});
$elemMatch:查找一个数组,该数组中的元素包含匹配所有给定的查询条件,语法
{ <field>: { $elemMatch: { <query1>, <query2>, ... } } }
示例
//查找tags数组,返回数组中包含["女人味","软妹子"]的所有文档 db.stars.find({"tags":{"$elemMatch":{"$in":["女人味","软妹子"]}}});
$size:查找指定长度数组的文档
//查找tags数组长度为4的文档 db.stars.find({"tags":{"$size":4}});
$:操作符
$slice:操作符