mongodb 查询 mysql_MongoDB 数据库数据查询操作

MongoDB 数据库登录终端后,进行数据查询时的一些筛选方法。

一、条件操作符

MongoDB 数据库库查询时,使用到的条件操作符。

$gt (>) 大于

$lt (

$gte (>=) 大于等于

$lte (<= ) 小于等于

例子:

db.testtable.find({age : {$gt : 22}})

db.testtable.find({age : {$lte : 19}})

$all匹配所有

db.users.find({like_code:{$all:[6,8]}})

#条件必须全部满足[6,8]

$exists字段是否存在

db.users.find({addr:{$exists:false}})

#不存在地址

Null值处理

db.user.find({addr:{“$in”:[null],”$exists”:true}})

#字段必须存在,数值为NULL

$mod取模运算

db.user.find({age:{$mod:[6,1]}})

#年龄对6取模等于1

$ne不等于

db.user.find({age:{$ne:3}})

#不等于3

$in包括

db.user.find({age:{$in:[7,8]}})

#和mysql中in相同

$nin不包含

$size数组元素个数

db.user.find({my_like:{$size:2}})

#my_like数组中有两个元素的

正则匹配

db.user.find({name:{$not:/^B.*/}})

#名字不以B开头的

二、MongoDB 数据库操作方法

文档数量count()

匹配文档的数量

db.COLLECTION_NAME.find({age:2}).count()

排序sort() sort方法接受对象或者数组,使用{“fidle”:”1″}设置。

其中 1 为升序排序,而-1是用于降序排列

db.COLLECTION_NAME.find().sort({KEY:1})

限定数量limit

limit方法接受一个数字作为参数。

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

跳过一定数量skip

skip方法接受一个数字作为参数

db.COLLECTION_NAME.find().limit(NUMBER).skip(NUMBER)

三、聚合器 aggregate

用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。

3.1、聚合器的操作符

$sum 计算总和。

db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$sum : “$likes”}}}])

$avg 计算平均值

db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$avg : “$likes”}}}])

$min 获取集合中所有文档对应值得最小值。

db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$min : “$likes”}}}])

$max 获取集合中所有文档对应值得最大值。

db.mycol.aggregate([{$group : {_id : “$by_user”, num_tutorial : {$max : “$likes”}}}])

$push 在结果文档中插入值到一个数组中。

db.mycol.aggregate([{$group : {_id : “$by_user”, url : {$push: “$url”}}}])

$addToSet 在结果文档中插入值到一个数组中,但不创建副本。

db.mycol.aggregate([{$group : {_id : “$by_user”, url : {$addToSet : “$url”}}}])

$first 根据资源文档的排序获取第一个文档数据。

db.mycol.aggregate([{$group : {_id : “$by_user”, first_url : {$first : “$url”}}}])

$last 根据资源文档的排序获取最后一个文档数据

db.mycol.aggregate([{$group : {_id : “$by_user”, last_url : {$last : “$url”}}}])

3.2、聚合器的方法

$project:

修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。

$match:

用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。

$limit:

用来限制MongoDB聚合管道返回的文档数。

$skip:

在聚合管道中跳过指定数量的文档,并返回余下的文档。

$unwind:

将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。

$group:

将集合中的文档分组,可用于统计结果。

$sort:

将输入文档排序后输出。

$geoNear:

输出接近某一地理位置的有序文档。

四、聚合方法实例

4.1、$project实例

db.article.aggregate(

{ $project : {

title : 1 ,

author : 1 ,

}}

);

这样的话结果中就只还有_id,tilte和author三个字段了,默认情况下_id字段是被包含的,如果要想不包含_id话可以这样:

db.article.aggregate(

{ $project : {

_id : 0 ,

title : 1 ,

author : 1

}});

4.2.$match实例

db.articles.aggregate( [

{ $match : { score : { $gt : 70, $lte : 90 } } },

{ $group: { _id: null, count: { $sum: 1 } } }

] );

$match用于获取分数大于70小于或等于90记录,然后将符合条件的记录送到下一阶段$group管道操作符进行处理。

4.3.$skip实例

db.article.aggregate(

{ $skip : 5 });

经过$skip管道操作符处理后,前五个文档被”过滤”掉。

五、Map Reduce计算模型

使用 MapReduce 要实现两个函数 Map 函数和 Reduce 函数,Map 函数调用 emit(key, value), 遍历 collection 中所有的记录, 将 key 与 value 传递给 Reduce 函数进行处理。

5.1、Map 函数

Map 函数必须调用 emit(key, value) 返回键值对。

5.2、Reduce 函数

reduce 统计函数reduce函数的任务就是将key-values变成key-value,也就是把values数组变成一个单一的值value。。out 统计结果存放集合(不指定则使用临时集合,在客户端断开后自动删除)。query 一个筛选条件只有满足条件的文档才会调用map函数。(query。limit,sort可以随意组合)sort 排序和limit结合的sort排序参数(也是在发往map函数前给文档排序),可以优化分组机制limit 返回数发往map函数的文档数量的上限(要是没有limit,单独使用sort的用处不大)

map 映射函数

(生成键值对序列,作为 reduce 函数参数)。

reduce 统计函数

reduce函数的任务就是将key-values变成key-value,也就是把values数组变成一个单一的值value

out 统计结果存放集合

(不指定则使用临时集合,在客户端断开后自动删除)。

query 一个筛选条件

只有满足条件的文档才会调用map函数。(query。limit,sort可以随意组合)

sort 排序

和limit结合的sort排序参数(也是在发往map函数前给文档排序),可以优化分组机制

limit 返回数

发往map函数的文档数量的上限(要是没有limit,单独使用sort的用处不大)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值