首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用MongoDB开发过程常见错误分析

分析: 由于mongo shell实际上一个js引擎,而在javascript中,基本类型中并没有int或long,所有整数字面量实际上都以精度浮点数表示(IEEE754格式)。...64位精度浮点数中,实际由1bit符号位,11bit阶码位,52bit尾数位构成。...游标只有在遍历完了所有查询结果以后,或者客户端主动发来消息要求终止(比如到达游标使用超时时间,默认10分钟,或者客户端检测到客户端游标已经不再使用时),MongoDB才会销毁游标,释放其占用资源...但问题,首先,在MongoDB文档有大小限制,目前版本中每个文档最大不能超过16M,所以使用内嵌文档存储无法满足粉丝或关注好友增长需求,大用户节点可能将会有大量粉丝或关注用户,超过16M,届时程序将很难扩展...但很多时候,即使我们能够在写入之前分辨数据插入还是更新,但由于程序员“懒”这个特性,都会仍然对所有写操作使用update(upsert=true),而不是区分使用insert和update。

2.4K30

MongoDB基础之BSON数据类型

调用Date()实际上会返回对日期字符串表示,而不是真正Date对象。这不是MongoDB特性,而是JavaScript本身特性。...MongoDB中有3种数字类型,shell必须绕过JavaScript限制。默认情况下,shell中数字都被MongoDB当作精度数。...数字只能表示为精度数,有些64位整数并不能精确地表示为64位浮点数。所以要是存入一个64位整数,然后在shell中查看,它会显示一个内嵌文档,表示可能不准确。...要是插入64位整数不能精确地作为精度数显示,shell会添加两个键,分别是“top”(表示高32位)和“bottom”(表示低32位)。...二、类型之间比较和排序 比较不同BSON类型值时,MongoDB使用以下比较顺序,从最低到最高: MinKey(内部类型)、Null、数字(整数,整数,精度数,小数)、符号,字符串、Object、

8.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

MongoDB基础之BSON数据类型

MongoDB中有3种数字类型,shell必须绕过JavaScript限制。默认情况下,shell中数字都被MongoDB当作精度数。...数字只能表示为精度数,有些64位整数并不能精确地表示为64位浮点数。所以要是存入一个64位整数,然后在shell中查看,它会显示一个内嵌文档,表示可能不准确。...要是插入64位整数不能精确地作为精度数显示,shell会添加两个键,分别是“top”(表示高32位)和“bottom”(表示低32位)。...调用Date()实际上会返回对日期字符串表示,而不是真正Date对象。这不是MongoDB特性,而是JavaScript本身特性。...二、类型之间比较和排序 比较不同BSON类型值时,MongoDB使用以下比较顺序,从最低到最高: MinKey(内部类型)、Null、数字(整数,整数,精度数,小数)、符号,字符串、Object、

4.1K10

mongo常用字段类型

每个数据类型对应一个数字,在MongoDB中可以使用$type操作符查看相应文档BSON类型 MongoDB无须声明数据类型,全自动匹配 每种BSON类型都具有整数和字符串标识符,如下表所示: Type...19-24字节随机数 由于ObjectId中保存了创建时间戳,所以你不需要为你文档保存时间戳字段, 可以通过"getTimestamp()"来获取文档创建时间戳, 返回时间戳 --返回时间戳 mongos...js引擎,而在javascript中,基本类型中并没有int或long,所有整数字面量实际上都以精度浮点数表示(IEEE754格式)。...64位精度浮点数中,实际由1bit符号位,11bit阶码位,52bit尾数位构成。...11bit余-1023阶码使得精度浮点数提供大约-1.7E308~+1.7E308范围,52bit尾数位大概能表示15~16位数字(部分16位长整数已经超出52bit能表示范围)。

6.4K30

mongodb11天之屠龙宝刀(九)js函数入门:MongoDB基于js数据类型修改

数据类型 基本数据类型   MongoDB文件存储格式为BSON,同JSON一样支持往其它文档对象和数组中再插入文档对象和数组,同时扩展了JSON数据类型.与数据库打交道那些应用。...因为MongoDB中有3种数字类型(32位整数、64位整数和64位浮点数),shell必须绕过JavaScript限制。默认情况下,shell中数字都被MongoDB当做精度数。...所以明智做法尽量不要在shell下覆盖整个文档。 日期   JavaScriptDate对象用做MongoDB日期类型,创建一个新Date对象时,通常会调用new Data(“”)。...4、调用函数进行类型 关于转换从string转化data,int32,都没问题,但是执行转换精度过程中始终在shell中无法执行,如果你可以烦请告知,我这面因此考虑使用函数转换, 函数形式如下...返回从字符串第一个字符开始,如果字符不是以整数开头则返回0。parseInt()函数还可以转换十六进制数或十进制数。

2.1K40

mongodb11天之屠龙宝刀(九)js函数入门:MongoDB基于js数据类型修改

数据类型 基本数据类型   MongoDB文件存储格式为BSON,同JSON一样支持往其它文档对象和数组中再插入文档对象和数组,同时扩展了JSON数据类型.与数据库打交道那些应用。...因为MongoDB中有3种数字类型(32位整数、64位整数和64位浮点数),shell必须绕过JavaScript限制。默认情况下,shell中数字都被MongoDB当做精度数。...所以明智做法尽量不要在shell下覆盖整个文档。 日期   JavaScriptDate对象用做MongoDB日期类型,创建一个新Date对象时,通常会调用new Data(“”)。...4、调用函数进行类型 关于转换从string转化data,int32,都没问题,但是执行转换精度过程中始终在shell中无法执行,如果你可以烦请告知,我这面因此考虑使用函数转换, 函数形式如下...返回从字符串第一个字符开始,如果字符不是以整数开头则返回0。parseInt()函数还可以转换十六进制数或十进制数。

1.4K30

MongoDB :第三章:MongoDB数据类型与创建MongoDB数据库

它们使用了系统命名空间: dbname.system.* 在MongoDB数据库中名字空间 .system.* 包含多种系统信息特殊集合(Collection),如下: 集合命名空间...Double 精度浮点值。用于存储浮点值。 Min/Max keys 将一个值与 BSON(二进制 JSON)元素最低值和最高值相对比。 Array 用于将数组或列表或多个值存储为一个键。...记录文档修改或添加具体时间。 Object 用于内嵌文档。 Null 用于创建空值。 Symbol 符号。该数据类型基本上等同于字符串类型,但不同,它一般用于采用特殊符号类型语言。...接下来 3 个字节机器标识码 紧接两个字节由进程 id 组成 PID 最后三个字节随机数 MongoDB 中存储文档必须有一个 _id 键。...这个键值可以是任何类型,默认个 ObjectId 对象 由于 ObjectId 中保存了创建时间戳,所以你不需要为你文档保存时间戳字段,你可以通过 getTimestamp 函数来获取文档创建时间

1K10

MongoDB系列6:MongoDB索引介绍

1、前言 和关系型数据库一样,MongoDB索引可以提高查询执行效率。索引就好比书中目录,可以快速定位书中某一页。适当索引查询,优化器可以快速地返回结果集。...它们为每一个插入文档在每个索引字段中包含一个唯一索引词。 ·构建全文索引与构建一个大型多键索引非常相似,而且相同数据下,比构建一个简单有序索引要长。...,边界为-180到180,如果文档坐标数据在范围之外,MongoDB就会返回一个错误。...3) 定义2d索引位置精度: 默认情况下,传统坐标对上2d索引使用26位精度,大致相当于2英尺或60厘米精确度,默认范围-180到180。精度衡量大小用来存储位置数据Geohash值位。...更高精度一个好处查询扫描索引较小部分以返回结果。

2.9K101

mongodb学习整理三,mongodb与MYSQL之间联系。query与projection

,类似SQL中SELECT from table*/ { “_id” : 2, “name” : “user2”,”age” : 12 } 上面的代码中将文档所有字段都返回了,可能这个文档小无所谓...每种类型对应数字,下面已经列出了。 ? 在mongodbshell中某些类型不存在,比如数字32位精度表示精度。...name” : “yue” } { “_id” : 2, “age” : 2 } { “_id” : 3, “age” : 15 } db.c2.find({age:{$type:1}}) /age类型为精度文档...使用function时候如果返回true,则查找出此文档。...$elemMatch 对于字段数组,而且数组中元素内嵌文档,在我们根据数组中内嵌文档做查询时候,需要 $elemMatch。

1.1K30

mongodb学习整理三,mongodb与MYSQL之间联系。query与projection

,类似SQL中SELECT from table*/ { “_id” : 2, “name” : “user2”,”age” : 12 } 上面的代码中将文档所有字段都返回了,可能这个文档小无所谓...每种类型对应数字,下面已经列出了。 ? 在mongodbshell中某些类型不存在,比如数字32位精度表示精度。...name” : “yue” } { “_id” : 2, “age” : 2 } { “_id” : 3, “age” : 15 } db.c2.find({age:{$type:1}}) /age类型为精度文档...使用function时候如果返回true,则查找出此文档。...$elemMatch 对于字段数组,而且数组中元素内嵌文档,在我们根据数组中内嵌文档做查询时候,需要 $elemMatch。

1.2K50

使用 MongoDB 之前应该知道 14 件事

根据一般经验,对于数据库是什么以及它们能干什么,人们会有先入为主认识。为了给他人提供方便,本文列出了一些常见错误。 本文要点 即使 MongoDB 没有强制要求,设计一个模式还是至关重要。...但是,由于 MongoDB 一个多租户系统,它会尽可能地占用内存,因此最好安装在服务器上,最大限度地提供内存,即使开发工作。...但是,可以容纳大文档并不意味着那是一个好主意。MongoDB 在单个文档大小为几 KB 时表现最好,处理它们方式更像宽 SQL 表行。大文档会导致 多种性能问题 。...对于排序操作中所有文档总大小, 有 32MB 内存限制 ,如果 MongoDB 达到了这个限值,它就会产生错误,或者有时候 仅仅返回一个空记录集 。...除非你设置 multi 参数,更新匹配查询条件所有文档,否则它不会更新集合里所有文档。这一点不是那么明显。

1.9K30

geohash之2d 地理空间索引

默认情况下,2d地理空间索引假设经度和纬度边界为-180(含180 度), 即180度(即[-180,180 ))。MongoDB返回一个错误,并拒绝指定范围之外坐标数据文档。...精度较低索引对插入操作处理开销较低,并且占用较少空间; 然而,更高精度索引意味着查询将需要扫描索引较小部分以返回结果。实际存储值始终用于最终查询处理中,并且索引精度不会影响查询准确性。...有关命令详细信息,请参阅查询Haystack索引。 干草堆索引根据位置返回文档和完全匹配单个附加条件理想选择 。这些索引不一定适合将最近文档返回到特定位置。...默认情况下,使用干草堆索引查询返回50个文档。 距离计算 在执行2d 地理空间查询之前,MongoDB会执行距离计算。默认情况下,MongoDB使用平面几何来计算点之间距离。...下面的球形2D查询,返回集合中所有文件地方内100英里点[ -74, 40.74 ]。

2.2K40

性能最佳实践:MongoDB索引

所以接下来会介绍一些有帮助最佳实践。 MongoDB索引 在所有数据库中,索引都有效地支持查询执行。如果没有它们,数据库就必须扫描集合或表中每个文档,然后在其中选择与查询语句相匹配那些。...尽可能使用覆盖查询 覆盖查询可以直接从索引返回结果,而不需要访问源文档,因此非常高效。 想要查询被覆盖,需要过滤、排序和/或返回给客户端所有字段都必须出现在索引中。...消除不必要索引 索引资源密集型即使MongoDBWiredTiger存储引擎中使用压缩,它们也会消耗RAM和磁盘。在更新字段时,必须维护关联索引,这会带来额外CPU和磁盘I/O开销。...可以定义一个过滤器来自动索引集合中所有匹配字段、子文档和数组。 与其他索引一样,通配符索引也需要存储和维护,因此它们会给数据库增加开销。...还可以使用$indexStats聚合管道来获取索引统计信息。 自动化索引建议 即使可以使用MongoDB工具提供所有这些遥测技术,你仍然要负责提取和分析所需数据,以决定应该添加哪些索引。

3.4K30

MongoDB数据库基础教程(二) - 数据结构类型详解

RDBMS 与 MongoDB 对应术语: 在mongodb通过数据库、集合、文档方式来管理数据,下边mongodb与关系数据库一些概念对比: 注意 文档键/值对有序。...文档值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入文档) MongoDB区分类型和大小写 MongoDB文档不能有重复文档字符串。...,这样话就可以确保所有文档在磁盘上位置一直保持不变。...它们使用了系统命名空间: dbname.system.* 在MongoDB数据库中名字空间 .system.* 包含多种系统信息特殊集合(Collection),如下: 集合命名空间 描述 dbname.system.namespaces...Double 精度浮点值。用于存储浮点值。 Min/Max keys 将一个值与 BSON(二进制 JSON)元素最低值和最高值相对比。

1K41

mongodb存储数据类型(redis存储数据类型)

大家好,又见面了,我你们朋友全栈君。 MongoDB数据存储结构 1.基本概念 在MongoDB中数据存储基本概念数据库、集合、文档。...文档(document)MongoDB中数据基本存储单元,非常类似与关系型数据库管理系统中行,当更有表现力。...它们使用了系统命名空间: dbname.system.* 在MongoDB数据库中名字空间 .system.* 包含多种系统信息特殊集合(Collection),如下: 集合命名空间...Double { “x” : 3.14 } 精度浮点值。用于存储浮点值。 Min/Max keys 将一个值与 BSON(二进制 JSON)元素最低值和最高值相对比。...注意Date()函数与Js中一样,返回日期格式字符串,日期对象和字符串无法匹配,所以执行删除、更新和查询操作时对导致很多问题。

3.7K11

开始使用MongoDB之前应该知道14件事

但是,由于MongoDB一个多租户系统,它会尽可能地占用内存,因此最好安装在服务器上,最大限度地提供内存,即使开发工作。...不是这样:安全对于所有MongoDB服务器都很重要。...MongoDB在单个文档大小为几KB时表现最好,处理它们方式更像宽SQL表行。大文档会导致多种性能问题。 使用大数组创建文档 文档可以包含数组。最好把数组元素数量保持在四位数以下。...对于排序操作中所有文档总大小,有32MB内存限制,如果MongoDB达到了这个限值,它就会产生错误,或者有时候仅仅返回一个空记录集。...除非你设置multi参数,更新匹配查询条件所有文档,否则它不会更新集合里所有文档。这一点不是那么明显。

4.5K20

MongoDB系列二(介绍).

二、基础知识 1、文档     文档MongoDB核心概念,文档就是键值对一个有序集。     文档字符串;不能含有\0(空字符),这个字符用于表示键结尾;不能使用系统保留 ....文档值可以是任意MongoDB支持类型。      MongoDB键值对不但区分类型,而且区分大小写,并且有序。"3" 和 3 表示不同值。"foo" 和 "Foo"表示不同值。...如果在执行批量插入过程中有一个文档插入失败,那么在这个文档之前所有文档都会成功插入到集合中,而这个文档以及之后所有文档全部插入失败。...,将它字段pageviews 加1   -- $inc 只能用于整型、长整型或 精度浮点型值。...new --布尔类型,表示返回更新前文档还是更新后文档。默认更新前文档。 fields --文档中需要返回字段(可选)。 upsert --布尔类型,值为true时表示这是一个upsert。

1.6K80

一文了解Mongodb使用语法

在使用数据库之前,我们需要先了解下其基本数据结构类型。防止我们出现类型不匹配问题。 支持数据类型补充本人在开发中经常使用。还有更多数据类型可以参考官方文档。...支持数据类型如下: Type 描述 String 字符串类型,Mongodb中使用UTF-8合法 Double 精度浮点值 Boolean 布尔值 Object 用于内嵌文档 Integer 整数类型...db.test.find().count() 返回集合中有多少文档 删除文档 db.test.remove(条件) //删除数据库中指定条件集合文档。...更新文档Mongodb中有两种方式来修改数据 根据update 修改 个人在使用时候大部分使用该方案。 db.test.update(条件,新文档,是否新增,是否修改多条)。...然后就是MongodbQuery条件编写。使用一个好Query能帮助我们很好地找到想要结果。

57260

MongoDB 学习笔记

文档以一种Map形式展现出来,当然value可以是任意类型,也可以继续一个文档(递归定义) 2、集合 --> 对应关系数据库表。但是它又是无模式,即文档不要求一致。...默认包含system.indexes 表 4、创建集合: 因为mongodb中集合无模式,不像传统关系型数据库需要预先申明表包含哪些字段并且定义字段属性。虽有无需预先定义。...,yourCollectionName.remove() 会清空此集合中所有文档 8、文档更新 Mongo中更新有两种 一种:用新文档去替换旧文档。...db.myMongodb.user.update({"_id":ObjectId("4ed373c46d375f1a1960ed07")},  {"$inc" : {"age" : 1}})  Tips: $inc 只能用于整数,长整数和精度浮点数...Mongodb 查询操作 1、查询全部集合 db.myMongodb.post.find()  如果console的话,默认显示20条记录 2、返回指定键 db.myMongodb.post.find

68840
领券