Step into MongoDB - 02 - 数据类型

目录

摘要

数值类型,访问数组

数据类型

分类

  • null
  • boolean
  • 32bit int
  • 64bit int
  • 64bit float
  • string
  • ObjectId
  • 等等

数值类型

MongoDB 支持 3 种类型:32 位整数,64 位整数和 64 位浮点数。

规律

  • 默认有小数点的数字会被保存为 64 位 double。
  • 在32位机器上
    • 没有小数点的数字会被保存为 32 位 int,使用 bigint 会被保存为 64 位 int
    • 超过 64 位 int 的数字会被自动解析为 double
  • 在 64 位机器上
    • 没有小数点的数字会被保存为 64 位 int,且无法保存 32 位 int

所以如果 32 位机器和 64 位机器共同使用的话,会发生各种奇怪的现象。

Shell 中的数值

Shell 只有一种数字类型 8-byte float,这意味着它并不是总能显示正确的 8-byte integer。在 shell 显示 64 位 int 时,它可能会被显示为近似值。

例如:

{
     "x":{
          "floatApprox":xxx,
          "top":yyy,
          "bottom":zzz
     }
}

这并不表示 x 是浮点型,而是表示 x 并不精确,top 是高 32 位,bottom 是低 32 位

但是 Javascript shell 只支持 64 位浮点数,这意味着即使从数据库原封不动取得一个 32 位整数的记录再重新更新,数据也会被转换为 64 位浮点数。

数组类型

访问数组中的元素
db.<dbName>.<collectionName>.<index>

例:

db.blog.find({ "comments.0.author" : "Jane" })
使用 “$”

很多时候必须先进行查询才能获得下标。此时可以使用 $,其总会返回匹配条件的第一条。

<collectionName>.$

例:

db.blog.update({ "comments.author" : "John"}, {"$set" : {"comments.$.author" : "Jim"}})`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值