3.4.3 软件运行环境说明: 设备: 客户程序硬件要求: 具有 1核处理器且满足以下要求的计算机: 最低 1G内存 最小 20 GB 硬盘 web服务器硬件需求: 具有1核处理器且满足以下要求的计算机...'] #重命名表头 return r 聚类完成后,根据事件的主办方级别、主办方类型及影响范围属性对聚类热度进行加权,得到热度属性。...、主办方类型及影响范围属性对聚类热度进行加权值来得出该事件的热度值。...MongoDB 文档/表类似于 JSON 对象。数据库各个表字段设计如下。...概览范围 String 举办城市 String 聚类热度 String 表名:eshow 字段名 数据类型 事件类型 String 标签 String 事件名称 String 开始日期 String
示例2 : 把文档中 pages 字段的值都增加10。并重命名成 newPages 字段。...名称 说明 $setEquals 相等集 如果输入集具有相同的不同元素,则返回'true'。接受两个或多个参数表达式。...接受单个参数表达式。...$dateToString 以格式化字符串的形式返回日期。 $isoDayOfWeek 返回ISO 8601格式的工作日编号,范围从“1”(星期一)到“7”(星期日)。...$isoWeek 返回ISO 8601格式的周数,范围从'1'到'53'。周数从'1'开始,以包含一年中第一个星期四的一周(周一到周日)为单位。
【原文地址】https://docs.mongodb.com/manual/ 引言 MongoDB是一种开源文档型数据库,它具有高性能,高可用性,自动扩展性 1.文档数据库 MongoDB用一个文档来表示一条记录...文档验证(3.2版新特性) 默认情况下,一个集合中的文档不必具有相同的结构 , 一个集中的文档不需要具有一系列相同的字段,并且不同文档中字段的数据类型可以不同。...设置单个文档大小的最大值有助于确保单个文档不会耗尽系统内存,或者在传输的过程中不会占用太多的带宽。为了能够存储超过最大值的文档,MongoDB提供了GridFS API。...5.5 Date BSON 日期类型是64位整型,表示从UNIX新纪元(Jan 1, 1970)来的毫秒数。这一结果表示了可表达的约2亿9000万年范围内的过去和未来。...当前的MongoDB JSON解析器不支持加载Unix新纪元之前的ISO-8601 字符串日期。
(或多字段)进行比较 复合子句(compound)用以合并其他的子句。...任意其他查询子句,包括其他的复合子句。...这就意味着复合子句可以相互嵌套,从而实现非常复杂的逻辑。...created 的日期范围是否在 2013 到 2014 ?...使用情况 原则上来说,使用查询语句做全文本搜索或其他需要进行相关性评分的时候,剩下的全部用过滤语句 最重要的查询过滤语句 term 过滤 term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_analyzed
文档由字段和值对组成,并具有以下结构: { field1: value1, field2: value2, field3: value3, ......在单个mongod实例中,时间戳记值始终是唯一的。 在复制中,oplog有一个ts字段。该字段中的值反映了使用 BSON 时间戳值的操作时间。...这导致可以 traceback 到过去和 Future 约 2.9 亿年的日期范围。...MongoDB索引种类: _id索引:绝大多数集合默认建立的索引;对于每个插入的数据,mongodb都会自动生成一条唯一的_id字段。 单键索引:不自动创建,值单一,例如字符串,数字或者日期。...功能齐全的 MongoDB UI Shell。具有代码自动完成功能,语法突出显示和提示。
Mongodb分片概括 分片在多台服务器上分布数据的方法, Mongodb使用分片来支持具有非常大的数据集和高吞吐量的操作的部署 具有大数据集和高吞吐量应用程序的数据库系统,可以挑战单台服务器的容量。...基于散列划分: MongoDB计算每个字段的hash值,然后用这些hash值建立chunks。 基于范围和基于散列划分的性能比较: 基于范围划分对于范围查询比较高效。...但是基于范围划分很容易导致数据不均匀分布,这样会削弱分片集群的功能。例如当shard key是个成直线上升的字段,如时间。...,片键和其支持指数的选择也可以影响数据的拆分,但集群可以使用 4、片键决定了集群中一个集合的文件咋不同的片键中的分布,片键字段必须被索引,且在集合中的每条记录都不能为空,可以是单个字段或者是复合字段 5...,Mongodb会宜聚片键的范围将数据块分裂为更小的数据块 img 片键的使用语法 1、在分片集合,必须制定目标集合和片键的sh.shardCollection() sh.shardCollection
因此素材库只能依赖FS的可靠属性,充其量再存储一下创建日期,其余的功能都放在mongodb数据库中实现 图像增强算法 根据经验,素材库中占大头的部分一定是图片文件,尤其是一张4K以上的高清图基本上是10m...单个模型的体积要足够小,3D模型中的PBR材质里尽量不要存在贴图,同时利用Draco压缩几何信息。...数据表字段 列 类型 索引 _id Integer 唯一 文件创建日期 tags List 多键 素材的标签 class_N String 组合 素材所在文件夹的绝对路径 size Integer 单键...tags tags是最重要的字段,是搜索引擎的主要检索字段,标签与素材是多对多的关系,需要应用mongodb的多键索引,通过标签来寻找素材非常方便。...size 素材的大小,通过体积范围来检索素材也很常用。 缩略图 图片素材,3D模型和特效材质都可以分配一个缩略图以供预览。
毫秒数为负值,表示1970年之前的日期。 在JavaScript中,Date对象用做MongoDB的日期类型,创建一个新的Date对象时,调用new Date()而不是Date()。...日期在数据中是以标准纪元开水的毫秒数的形式存储的,没有与之相关的时区信息。 9、Null null用于表示空值或者不存在的字段。...时间戳记值是64位值,其中:前32位是一个time_t值(自Unix时代以来的秒数),后32位是ordinal给定秒内操作的增量。 在单个mongod实例中,时间戳记值始终是唯一的。...在复制中,操作日志具有一个ts字段。该字段中的值反映了使用BSON时间戳值的操作时间。 注意时间戳类型只是在MongoDB内部使用。开发过程中使用的是日期类型。...6、不存在的字段 MongoDB将不存在的字段视为是空的BSON对象。 例如:{}和{a : null}进行比较,那么在比较的时候,a字段和空文档将视为等价的。
基于范围划分: MongoDB通过shard key值将数据集划分到不同的范围就称为基于范围划分。...基于散列划分: MongoDB计算每个字段的hash值,然后用这些hash值建立chunks。 基于范围和基于散列划分的性能比较: 基于范围划分对于范围查询比较高效。...但是基于范围划分很容易导致数据不均匀分布,这样会削弱分片集群的功能。例如当shard key是个成直线上升的字段,如时间。...,片键字段必须被索引,且在集合中的每条记录都不能为空,可以是单个字段或者是复合字段 5、Mongodb使用片键的范围是吧数据分布在分片中,每个范围,又称为数据块,定义了一个不重叠的片键范围Mongodb...把数据块与他们存储的文档分布到集群中的不同分布中,当一个数据块的大小超过数据块最大大小的时候,Mongodb会宜聚片键的范围将数据块分裂为更小的数据块 ?
MongoDB通过模式验证提供尽可能多的控制,允许您完全控制并强制执行诸如必填字段和可接受值范围之类的事情,仅举几例。...对内存利用率的影响 大量文档不仅会增加数据存储消耗,还会增加索引大小。在每个集合上创建了一个索引,并覆盖了符号和日期字段。...场景三: 基于大小的分组 比较之前的场景时的关键点是,分段数据具有显着的优势。方案2中描述的基于时间的分段将整整一分钟的数据存储到单个文档中。...查询时,我们可以在单个字段上指定日期或日期范围,这也是有效的,并且使用 UNIX 时间戳首先和最后一个进行过滤。请注意,我们使用整数值。...分片不仅有助于跨多个节点水平扩展数据,还可以标记分片范围,以便将数据分区固定到特定分片。节省成本的措施可能是将存档数据存储在运行成本较低的磁盘的分片上,并定期调整分片本身定义的时间范围。
MongoDB的默认数据库为”db”,该数据库存储在data目录中。 MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。...MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别,也是 MongoDB 非常突出的特点。...子集合 组织集合的惯例是使用“ . ”分割不同命名空间的子集合。例如一个具有博客功能的应用可能包含两个集合,分别是blog.posts和blog.authors。...MongoDB 内部使用,与普通的 日期 类型不相关。...在复制集中, oplog 有一个 ts 字段。这个字段中的值使用BSON时间戳表示了操作时间。 BSON 时间戳类型主要用于 MongoDB 内部使用。
还可以对字段进行重命名:db.users.aggregate({"$project" : {"userId" : "$_id", "_id" : 0}}),在对字段进行重命名时,MongoDB并不会记录字段的历史名称...MongoDB提供了包括分组操作符、数学操作符、日期操作符、字符串表达式 等等 一系列的操作符... 分组操作符 类似 SQL中分组后的操作,只适用于分组后的统计工作,不适用于单个文档。...逻辑表达式 适用于单个文档的运算,通过这些操作符,就可以在聚合中使用更复杂的逻辑,可以对不同数据执行不同的代码,得到不同的结果。...日期表达式 适用于单个文档的运算,只能对日期类型的字段进行日期操作,不能对非日期类型字段做日期操作。...MongoDB不允许单一的聚合操作占用过多的系统内存:如果MongoDB发现某个聚合操作占用了20%以上的内存,这个操作就会直接输出错误。
你可以对GridFS存储的文件进行范围查询。你还可以从文件的任意部分访问其信息,例如“跳到”视频或音频文件的中间。...此外,如果文件均小于16 MB BSON文档大小限制,请考虑将每个文件存储在单个文档中,而不是使用GridFS。您可以使用BinData数据类型存储二进制数据。...此集合中的文档具有以下格式: { "_id" : , "files_id" : , "n" : , "data" : } chunks...files.uploadDate GridFS首次存储这个文档的日期。此值为有日期类型。 files.md5 过期 FIPS 140-2禁止使用MD5算法。...元数据字段可以是任何数据类型,并且可以保存您要存储的任何其他信息。如果希望将其他任意字段添加到文件集合中的文档,请将其添加到元数据字段中的对象。
您将文档的位置数据存储为字段中的两个坐标,该字段包含二维数组或具有两个字段的嵌入式文档。...在创建索引时,MongoDB会将位置数据转换为二进制 geohash值,并使用位置数据和索引的位置范围计算这些值,如 位置范围中所述。...没有定义具有这种无效点的地理空间查询的行为。 在创建2d索引时,MongoDB提供了以下选项: 位置范围 所有2d地理空间索引都有由坐标范围定义的边界。...复合地理空间索引 如果只有具有位置数据的字段是第一个字段,则第二个地理空间索引可能是复合的。复合地理空间索引可以构建主要在基于位置的字段上选择的查询,也可以选择第二个条件。...在这种情况下,文档将包含包含文档阵列的字段(例如地址),其中每个文档具有保存位置坐标的字段(例如,loc:)。
分片集是MongoDB提供的一个原生的横向扩展能力,无需引入其他的中间件就可以轻松实现。 未分片: ? 两个分片集: ? 当使用分片之后,单个分片集的数据量就有了限制,从而保证了查询的性能。...3 分片集的数据分布策略 MongoDB分片集提供了三种数据分布的策略: (1)基于范围(Range) (2)基于哈希(Hash) (3)基于zone/tag 基于范围分片 首先,基于范围的数据分片很好理解...,通常会按照某个字段如创建日期来区分不同范围的数据存储。...其优点是分片范围的查询性能足够好,缺点是存在热点数据问题,数据的分布可能会不够均匀。 基于哈希分片 其次,基于Hash的分片策略也比较好理解,通常会按照某个字段的哈希值来确定数据存储的位置。 ?...其优点是数据的分布会比较均匀,缺点则是范围查询的效率会较低,因为可能会涉及在多个节点读取数据并聚合。
简而言之就是单个字段的索引,比如 db.children.createIndex({ age : 1 }) 就相当于给 children 表的 age 字段建立了一个升序索引 (升序 ( 1) 或降序...表 以 age 字段升序 height 字段升序建立了一个索引 多键索引 在MongoDB中可以「基于数组来创建索引」。...Hashed索引 为了支持基于Hashed的分片,MongoDB提供了Hashed索引类型,该索引类型对字段值的Hashed进行索引。...这些索引在其范围内具有更随机的值分布,但只支持相等匹配,而不支持基于范围的查询。 索引特性 唯一索引 在创建集合期间,MongoDB 在_id字段上创建唯一索引,这也是默认的唯一索引。...比如该文档 2000 年前的数据为垃圾数据,不常用,那就可以根据时间大于 2000 年创建索引 稀疏索引 索引的稀疏属性可确保索引仅包含具有索引字段的文档的条目。索引会跳过没有索引字段的文档。
简单子句(leaf clauses)(比如 match 子句)用以在将查询字符串与一个字段(或多字段)进行比较 复合子句(compound)用以合并其他的子句。...复合子句可以合并多种子句为一个单一的查询, 无论是简单子句还是其他的复合子句 在关系型数据库中有很多条件判断,比如 等于= 不等于!...一条过滤语句会询问每个文档的字段值是否包含着特定值, 比如 是否 createTime 的日期范围某个时间段内? 是否 status 字段中包含单词 “published” ?...如果用 match 下指定了一个确切值, 在遇到数字, 日期, 布尔值或者 not_analyzed 的字符串时, 它将为你搜索你给定的值,举几个例子 { "match": { "age": 26 }}...---- range 过滤 range 过滤 按照指定范围查找一批数据 范围操作符包含: gt 大于 gte 大于等于 lt 小于 lte 小于等于 例子: 过滤查询 字数 大于等于1000 小于2000
BSON BSON是一种二进制序列化格式,用于在 MongoDB 中存储文档和进行远程过程调用 跟 JSON 的数据结构很像,但是支持更丰富的数据类型 数据类型 数据类型 序号 别名 备注 Double...的好处 对存储 ObjectId 值的 _id 字段进行排序大致相当于按创建时间排序 在 mongo shell 中,可以使用 ObjectId.getTimestamp() 方法访问 ObjectId...字符串是UTF-8 在序列化和反序列化 BSON 时,每种编程语言的驱动程序都会从该语言的字符串格式转换为 UTF-8 这使得在 BSON 字符串可以轻松存储大多数国际字 此外,MongoDB $regex...32 位是 time_t 值(至 1970 年依赖的秒数),后 32 位是给定秒内操作的递增序数 在单个 mongod 实例中,时间戳值始终是唯一的 new Timestamp() 在插入包含具有空时间戳值的顶级字段的文档时...两种函数构造的 Date,值是同个类型的 以字符串形式返回日期值 mydate1.toString() ? 返回日期值的月份部分 月是零索引,因此一月是月0 mydate1.getMonth() ?
领取专属 10元无门槛券
手把手带您无忧上云