• Mangos笔记


    $lt、$lte、$gt、$gte和$ne

    $in、$nin、$or

    $mod、$not

    $exists

    条件句式内层文档的键,修改器是外层文档的键,一个键可以有多个

    条件,但是一个键不能对应多个更新修改器

    支持正则表达式,采用基于Perl(PCRE)库来匹配

    查询数组

    $all、$size、$slice

    内嵌文档

    针对其特定键值进行查询才是好做法,对于数组则采用$elemMatch

    利用JS查询

    $where

    游标

    用来返回find的执行结果,客户端可以对其结果进行处理得到想要的集合,

    实现的方法有hasNext、next、forEach,当调用find的时候,shell并不立即

    查询数据库,而是等待真正要求获得结果的时候才发送查询;结果限制:

    limit、skip、sort,需要注意的是利用skip分页很慢,最好利用查询本身条件

    来进行分页;获取结果集大小count;利用$snapshot保证内容不被修改

    索引

    用来加速查询,类似书籍的目录,采用ensureIndex的语法,如果索引包含N个

    键,则对前几个键的查询都有帮助,缺点就是每次操作都会产生额外的开销,

    一般来说,要是查询要返回集合中一半以上的结果,用表扫描会更高效,故需要

    考虑:什么样的查询/哪些需要索引/索引方向/如何让更多数据常驻类型;索引还

    可以自定义的名字name、标识唯一索引unique、消除重复dropDups;此外可以利用

    explain来获得查询详情,用hint强制使用某个索引。

    管理时放到系统的indexes集合中,只能通过ensureIndex和dropIndexes进行操作,

    当要修改索引可以利用background让其后台进行处理,当然也可以删除指定名的

    索引,如下所示:

    db.runCommand({'dropIndexes' : 'foo', 'index' : 'alphabet'})

    db.runCommand({'dropIndexes' : 'foo', 'index' : '*'})

    地理索引

    提供专门的基于坐标平面的索引,区别是ensureIndex中键的值不是-1或1,而是2d,

    并且在其中,还可以添加min和max的键来现在大小,但是键的值必须是某种形式的

    一对值,可以利用$near和$within/$box/$center来操作查询

    聚合

    count:返回集合中文档数量

    distinct:找出给定键的所有不同的值

    group:类似SQL的GROUPBY来将集合按选定键值的不同分组

    {

             'ns':集合

             'key':分组键

             $keyf: 对键值调用一次,支持复杂的键值

             'initial':传给reduce的初始值

             $reduce:每个文档都会调用一次,传递当前文档和累加器文档

             'condition':限制条件

             'finalize':每组结果传到客户端之前调用,用于修剪结果

    }

    MapReduce:以上能做的他都能做,他还可以拆分问题,再将各个部分发送到不同的机器上完成,

    完成后,再汇集成最终的完整的结果;他需要几个步骤,开始map映射键值对,然后shuffle分组键值,

    接下来reduce把列表值简化成单值,然后以该单值继续shuffle和reduce,直到每个键的列表只有一个值

    为止,语法如下:

    1.mapreduce:集合对象

    2.map:键值映射

    3.reduce:列表聚合

    4.finalize:修剪结果

    5.keeptemp:临时结果集是否保存

    6.output:临时结果集的名字

    7.query:map前的过滤

    8.sort:map前的排序

    9.limit:map前限制个数

    10.scope:JS代码用到的变量

    11.verbose:是否产生详尽日志

    注意:map/reduce/finalize会忽略代码作用域,而采用自己的scope作用域

  • 相关阅读:
    go基础_defer
    go基础_函数
    go基础_控制语句
    go基础_数组
    go基础_切片
    go命令行参数
    Hdu2795Billboard线段树
    Hdu1394Minimum Inversion Number线段树
    Hdu1754单点更新
    Hdu1166单点更新线段树
  • 原文地址:https://www.cnblogs.com/fuland/p/3643496.html
Copyright © 2020-2023  润新知