资讯专栏INFORMATION COLUMN

Mongo语法总结

shmily / 2146人阅读

摘要:先进行过滤,再分组实例解释进行过滤,这里利用两个字段进行过滤。聚合操作可以对分组的数据执行如下的表达式计算计算总和。根据分组,获取集合中所有文档对应值得最大值。将指定的表达式的值添加到一个数组中。

先进行过滤,再分组
1、实例:

db.getCollection("UpMsgItem").aggregate(
[
{$match : {
    createTime : {$gt : 1513568964539, $lte : 1516160964542 },
    wxAppId : "wx8bd8a617c9ae66ed" }},
    {$group : {_id : "$wxOpenId"}}
])

2、解释:
match进行过滤,这里利用createTime、wxAppId两个字段进行过滤。过滤之后的数据,根据_id进行分组。$group对应的值就是分组以后返回的数据,可以在里面进行聚合操作。

多个字段进行分组
1、实例:

db.getCollection("UpMsgItem").aggregate(
    [
    {$match : {
    createTime : {$gt : 1519613221561, $lte : 1519699621562 }}},
    {
        $group : {"_id": { "wxOpenId" : "$wxOpenId", "wxAppId": "$wxAppId"}}
    }
])

计算分组以后的记录数:
1、实例:

    db.getCollection("UpMsgItem").aggregate(
[
{$match : {
    createTime : {$gt : 1507508412000, $lte : 1522881012000 }}},
    {
        $group : {"_id": { "wxOpenId" : "$wxOpenId", "wxAppId": "$wxAppId"}}
    }
]).map(function(record, index){
        print(index);
 });

先过滤,在进行分组、聚合操作:
1、实例:

db.getCollection("UpMsgItem").aggregate(
    [
    {$match : {
        createTime : {$gt : 1513568964539, $lte : 1516160964542 },
        wxAppId : "wx8bd8a617c9ae66ed" }},
        {$group : {_id : "$wxOpenId", sumCreateTime: {$sum: "$createTime"}}}
    ])

2、解释:
这里的sumCreateTime就是聚合后的结果,对createTime字段进行聚合。

group聚合操作:

$group:可以对分组的数据执行如下的表达式计算:

       $sum:计算总和。

       $avg:计算平均值。

       $min:根据分组,获取集合中所有文档对应值得最小值。

       $max:根据分组,获取集合中所有文档对应值得最大值。

       $push:将指定的表达式的值添加到一个数组中。

       $addToSet:将表达式的值添加到一个集合中(无重复值)。

       $first:返回每组第一个文档,如果有排序,按照排序,如果没有按照默认的存储的顺序的第一个文档。

       $last:返回每组最后一个文档,如果有排序,按照排序,如果没有按照默认的存储的顺序的最后个文档。

同时使用大于、小于查询

db.getCollection("UpMsgItem").find({
        "createTime" : {$gt : 1519556225560, $lt : 1519642625562},
        "ea" : "2"
    }).count();

查看字段是否存在

db.getCollection("log_original").find({
    exception : { $exists: true }})

两个字段之间比较

{ $where : "this.updateTime > this.createTime"} 

与操作:

db.getCollection("DownMsgItem").find({createTime : {$lte :1528646400000, $gte : 1529251200000}})

增加索引

db.getCollection("customer_evaluation_statistics").ensureIndex({"fsEa":1, "appId":1, "createTime" : 1})

注意点

1、mongo的update、findAndModify操作,如果没有set字段,会进行全量覆盖

参考:

http://blog.csdn.net/congcong...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/19197.html

相关文章

  • 经验拾忆(纯手工)=> MongoDB与PyMongo语法对比解析

    摘要:举个栗子你有一个箱子,里面有一个儿子级别和孙子级别的箱子共层现在你把孙子级别的箱子单独拿出来,把整个箱子替换掉就是这种思想。。。自己体会吧这种语法,好像列表的切片赋值。。官方建议我们用它的好处是把和由两个函数调用变为个参数传进去了。 阅读须知 由于是对比书写: M: 代表 Mongo原生语法 P: 代表 PyMongo书写方法 后面提到:同上 字眼: ...

    mo0n1andin 评论0 收藏0
  • mongo EOF(二)

    摘要:容器访问以为例,在原始的文件中,如下上面的配置,本地主机是无法访问容器的,我们至少需要暴露出一个端口。查看,的默认端口其实是,而这里写成也是有原因的。 任何事情的成功都需要掐准时间 上一节mongo EOF中,关于容器的配置,只是粗略的使用了Docker-Compose-MongoDB-Replica-Set项目提供好的docker-compose.yml文件。在使用过程中,我发现这个...

    dreambei 评论0 收藏0
  • mongodb操作基本语法(增删改查)

    摘要:启动启动服务输入命令进入操作终端,需要新开窗口基础语法查看当前所有的数据库查看当前所有的数据库新建数据库创建的数据库这个时候是看不到的,因为数据库里没有任何东西。查找集合所有信息班创建一个集合,并插入一条数据,数据里是带有对象的。 1、启动mongodb mongod -f /usr/local/etc/mongod.conf //启动服务 mongo //输入命令进入mongo操作...

    DirtyMind 评论0 收藏0
  • mongoDb的简单使用

    摘要:总结说明非数据库的用户不能使用数据库命令,比如等。数据库中的用户被视为超级用户即管理员。 MongoDB MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。 mongodb与 mysql性能比较 showImg(https://seg...

    Java_oldboy 评论0 收藏0

发表评论

0条评论

shmily

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<