设为首页 加入收藏

TOP

MongoDB简单查询操作符(非聚合操作)(一)
2015-11-21 01:42:25 来源: 作者: 【 】 浏览:0
Tags:MongoDB 简单 查询 操作 聚合

简单查询操作符(非聚合操作)


比较(Comparsion)操作相关

(1)$eq : 用来等值条件过滤某一个key的值。

用法示例(过滤某个key等于某个值,可以用 $eq)
db.op_test.find({"name":{$eq:"steven"}})

(2)$gt : 用来判断某个key值大于某个指定的值。

用法示例(过滤某个key值,大于某个指定的值)
db.op_test.find({"age":{$gt:19}})

(3)$gt : 用来判断某个key值大于等于某个指定的值。

用法示例(过滤某个key值,大于某个指定的值)
db.op_test.find({"age":{$gte:19}})

(4)$lt : 用来判断某个key值小于某个指定的值。

用法示例(过滤某个key值,小于某个指定的值)
db.op_test.find({"age":{$lt:20}})

(5)$lte : 用来判断某个key值小于等于某个指定的值。

用法示例(过滤某个key值,小于等于某个指定的值)
db.op_test.find({"age":{$lte:20}})

(6)$ne : 用来不等值条件过滤某一个key的值。

用法示例(过滤某个key不等于某个值,可以用 $ne)
db.op_test.find({"name":{$ne:"steven"}})

(7)$in : 用来指定某个key的值在指定的离散的值域内

用法示例(过滤某个key的值是否符合条件,和$or的区别就是,or可以组合不同key的不同条件,而$in则只的是单一条件)
db.op_test.find({"name":{$in:["steven","jack"]}})

(8)$nin : 和$in相对,用来指定key值不存在某个指定的离散值域内。

用法示例(和$in的用法相反)
db.op_test.find({"name":{$nin:["steven","jack"]}})
逻辑(Logic)运算相关

(1) $or : 任意组合不同的查询条件(可以针对任意key的限制条件),只要满足任意组合条件中的一个即可。

用法示例(返回 name 为 steven 或者 age 等于 20 的文档):
db.op_test.find({"$or" : [{"name":"steven"},{"age":20}]})

(2) $and: 和$or操作符相对,任意组合不同的查询条件(可以针对任意key的限制条件),并且必须同时满足所有条件。

用法示例(返回 name 为 steven 并且 age 等于 20 的文档):
db.op_test.find({"$and" : [{"name":"steven"},{"age":20}]})

(3) $not: 元条件语句,需要和其他条件语句组合使用。

用法示例($not 和 $lt 操作符组合使用,返回 age 大于等于20的文档):
db.op_test.find({"age":{"$not":{"$lt":20}}})

(4) $nor:和$or相反,表示所有条件均不能满足则返回。

用法示例(凡是 name 为 steven 或者 age 为 20 的全部过滤掉):
db.op_test.find({"$nor" : [{"name":"steven"},{"age":20}]})
元素(Element)运算相关

(1) $exists: 查询不包含某一个属性(key)的文档。

用法实例(凡是包含name这个key的文档全部返回)
db.op_test.find({"name":{"$exists":true}})

用法实例(凡是不包含name这个key的文档全部返回)
db.op_test.find({"name":{"$exists":false}})

ps:true和false的区别就是判断是否包含这个key

(2) $type : 过滤某个字段是某一个BSON数据类型的数据。

用法示例(返回所有name字段为String类型的所有文档)
db.op_test.find({"name":{"$type":2}})
ps:name后面的数字具体查询列表参见:http://docs.mongodb.org/manual/reference/operator/query/type/#op._S_type
求值(eva luation)操作相关

(1) $mod : 取余操作符,筛选经过区域操作后,结果符合条件的文档。

用法示例(返回age的值和 4 求余后 结果为 0 的数据)
db.op_test.find({"age" : {"$mod" : [4,0]}})

(2) $regex : 筛选值满足正则表达式的文档。

用法示例(返回 name 符合指定正则的数据,option选项限定正则的形式)
db.op_test.find({"name" : {$regex:"stev*",$options:"i"}})
ps:options相关参见:http://docs.mongodb.org/manual/reference/operator/query/regex/#op._S_regex

(3) $text: 针对建立了全文索引的字段,实施全文检索匹配。

用法示例(针对构建全文索引的字段进行搜索,默认为英文,不支持中文)
db.op_test.find({"$text":{$search:"steven",$language:"en"}})
ps:目前支持的语言以及缩写,参见:http://docs.mongodb.org/manual/reference/text-search-languages/

(4) $where: 强大的查询关键字,但性能较差,可以传入js表达式或js函数来筛选数据。

用法示例(返回满足传入的js函数的文档,函数表示文档中只要任意字段的值为"steven"则返回)
db.op_test.find({"$where":function(){
    for(var index in this) {
        if(this[index] == "steven") {
            return true;
        }
    }
    return false;
}})
数组(Array)相关操作

$all : 数组查询操作符,查询条件是一个数组,被查询的字段也是一个数组,要求被查询的数组类型的字段要是查询条件数组的超集(即大数组要包含小数组)。

用法示例:(查询key value对应的数组值,要同时包含"a","b","c"三个元素)
db.op_test.find({"values":{$all:["a","b"]}})

$elemMatch : 数组查询操作符,用来指定数组的每一个元素同时满足所罗列的条件,如果不指定,则条件会是或的关系

用法示例:(要匹配 values数组中,至少有一个元素,满足所有的条件)
用于指定嵌套文档操作,具体事例参见:http://docs.mongodb.org/manual/reference/operator/projection/elemMatch/

$s

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mongoCRUD数据操作符汇总 下一篇工欲善其事,必先利其器――利用P..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: