据库,由于
MongoDB
的
Value
字段对于
MongoDB
是非透明的,可以对其建立索引,还可
以进行全文检索,在查询效率上更具优势。该模式在游戏、电商、社交、视频直播、物流
等领域非常适用,通过在用户或商品中嵌套不同用途的子文档来实现快速查询。对于监控
日志数据存储,第三方信息抓取等场景也同样适用,因为不同监控数据、日志记录、抓取
的数据所包含的字段往往是不一样的,某种程度上说也是不可控的。同时,灵活的模式对
于类似游戏市场活动、移动
等要求快速开发上线但需求变动(导致数据模型变大)比
较大的产品或场景也比较适用。
其次,
还具有强大的索引能力,支持创建唯一索引、二级索引、
索引和地理
位置索引等,这在
数据库中是数一数二的,在此基础上,
还提供了执行计
划 功 能 , 通 过
(
!"#$%%&'#()&*(')%)%+,+'%)-!&%&*(''.(%/&*(''.(
)和
!-
命令可以查看执行计划、强制查询走某个索引,这些特性相比关系型数据库
也不逞多让。
集合在创建时默认就基于
0&
字段创建了唯一索引,数据插入时会检查
0&
字段的
唯一性,
可以在包括数组中字段或嵌套文档中的字段几乎任意字段上创建索引
(一般为二级索引),大大提高了查询效率,在没有跨记录或跨表事务但对性能要求又非
常高的某些场景下能够替代关系型数据库。在内存足够的情况下,索引会被加载到
1'!
中 , 如 果 执 行 的 查 询 是 索 引 覆 盖 的 (
!"#$%%&'#()&*(')%)%'+%2+
.)3.%/+&+.#'+&2+
),其性能甚至可以媲美
&#
等内存数据库等。
索引在保存日志或监控数据等场景下大有用武之地,通过创建
索引,实现自动删除
过期记录的功能,(在使用
4
索引需要注意,数据的过期时间无法精确控制,
无法做到过期即删除,在大数据量的情况下会有一定的性能开销和删除延迟)。
地理位置索引是
早已被用户所熟知的特性,其支持球面(
!+'
)和平面
(
5-
)两种模式,提供了丰富的地址位置的表示方式,如
6&
、
6&#!+
和
7
等,
对于移动
,如地图软件、打车软件、外卖软件,
强大的地理位置索引功能使
其最佳选择(
!"#$%%888()&*(')%*%#-%#.+,+)')+)-#
)&*96
);此外,对于物联网、智慧都市等领域,也需要大量的地理位置相关操作,
这些都是
的竞技场。
评论