• mongo操作之分页


    Javascript查询和$where查询
    查询 age > 18 的记录,以下查询都一样
    db.users.find({age: {$gt: 18}});
    db.users.find({$where: "this.age > 18"});
    db.users.find("this.age > 18");

    排序sort()
    以年龄升序asc
    db.users.find().sort({age: 1});
    以年龄降序desc
    db.users.find().sort({age: -1});

    限制返回记录数量limit()
    返回5条记录
    db.users.find().limit(5);
    返回3条记录并打印信息
    db.users.find().limit(3).forEach(function(user) {print('my age is ' + user.age)});
    结果
    my age is 18
    my age is 19
    my age is 20

    限制返回记录的开始点skip()
    从第3条记录开始,返回5条记录(limit 3, 5)
    db.users.find().skip(3).limit(5);

    查询记录条数count()
    db.users.find().count();
    db.users.find({age:18}).count();
    以下返回的不是5,而是user表中所有的记录数量
    db.users.find().skip(10).limit(5).count();
    如果要返回限制之后的记录数量,要使用count(true)或者count(非0)
    db.users.find().skip(10).limit(5).count(true);

    分组group()
    假设test表只有以下一条数据
    { domain: "www.mongodb.org"
    , invoked_at: {d:"2009-11-03", t:"17:14:05"}
    , response_time: 0.05
    , http_action: "GET /display/DOCS/Aggregation"
    }
    使用group统计test表11月份的数据count:count(*)、total_time:sum(response_time)、 avg_time:total_time/count;
    db.test.group(
    { cond: {"invoked_at.d": {$gt: "2009-11", $lt: "2009-12"}}
    , key: {http_action: true}
    , initial: {count: 0, total_time:0}
    , reduce: function(doc, out){ out.count++; out.total_time+=doc.response_time }
    , finalize: function(out){ out.avg_time = out.total_time / out.count }
    } );

    [
    {
    "http_action" : "GET /display/DOCS/Aggregation",
    "count" : 1,
    "total_time" : 0.05,
    "avg_time" : 0.05
    }
    ]

  • 相关阅读:
    【Canal源码分析】Canal Instance启动和停止
    【Canal源码分析】Canal Server的启动和停止过程
    【Canal源码分析】parser工作过程
    【源码分析】Canal之Binlog的寻找过程
    otter代码在IDEA远程DEBUG方法
    【源码】otter工程结构
    一个Java程序员的2018年展望与2017年总结
    【源码解析】Sharding-Jdbc的执行过程(一)
    IntelliJ IDEA 调试 Apache RocketMQ 源码
    [源码分析]HashSet 和LinkedHashSet
  • 原文地址:https://www.cnblogs.com/jghdream/p/3928843.html
Copyright © 2020-2023  润新知