首页 > mongodb > basic > 8.mongo命令行中的数据类型

8.mongo命令行中的数据类型

MongoDB采用`BSON`数据类型, 比`JSON`格式提供了更多的数据类型. 数据库驱动提供了本地方法支持这些数据类型, 并且mongo命令行也提供了一些帮助类来使用这些数据类型.数据类型包括以下几种:

1 Date

mongo命令行返回当前时间, 以字符串或者一个对象的形式.

  • Date() 以字符串返回当前时间
var myDateString = Date();

显示当前日期字符串输入:

myDateString

显示内容:

Thu Oct 26 2017 17:26:35 GMT+0800 (中国标准时间)

查看变量类型输入:

typeof myDateString

显示内容:

string
  • new Date() 返回以ISODate()包装的Date对象.
  • ISODate() 返回以ISODate()包装的Date对象.

mongo命令行中new Date()ISODate()都返回Date对象.

输入:

var myDate = new Date();
var myDateInitUsingISODateWrapper = ISODate();
myDate
myDateInitUsingISODateWrapper

显示:

ISODate("2017-10-26T09:30:19.073Z")
ISODate("2017-10-26T09:30:19.586Z")

用instanceof验证数据类型:

myDate instanceof Date
myDateInitUsingISODateWrapper instanceof Date

显示:

true
true

2 ObjectId

mongo命令行提供了ObjectId()包装类来封装ObjectId数据类型.

生成一个新的ObjectId,输入:

new ObjectId

显示:

ObjectId("59f1ac932cacee0f03e35dc6")

3 NumberLong

mongo命令默认返回浮点数, 提供了NumberLong()包装类来返回一个64位的整数.

例如:

NumberLong("2090845886852")

这个将定义一个64位整数, 而不是一个浮点数.

写入long型整数:

db.collection.insertOne( { _id: 10, calc: NumberLong("2090845886852") } )
db.collection.updateOne( { _id: 10 },
                      { $set:  { calc: NumberLong("2555555000000") } } )
db.collection.updateOne( { _id: 10 },
                      { $inc: { calc: NumberLong(5) } } )

检验结果:

db.collection.findOne( { _id: 10 } )

返回的文档对象:

{ "_id" : 10, "calc" : NumberLong("2555555000005") }

如果采用$inc操作符对NumberLong对象来进行float类型运算,结果数据变为float类. 举例:

1.采用$inc操作符加5, 5默认为浮点型.

db.collection.updateOne( { _id: 10 },
                      { $inc: { calc: 5 } } )

2.查找修改结果

db.collection.findOne( { _id: 10 } )

3.显示结果

{ "_id" : 10, "calc" : 2555555000010 }

4 NumberInt

mongo命令默认所有的数字类型数字为64位浮点型, 提供了NumberInt()构造函数来生成32位整数.

理论同NumberLong.

5 NumberDecimal

mongo命令默认所有的数字类型数字为64位浮点型, 提供了NumberDecimal()构造函数来指定128位浮点型十进制小数.

浮点数满足了绝大部分应用场景,不再额外介绍这个.可以参考原文.

6 mongo命令查看类型

mongo命令中可以通过instanceoftypeof操作符来查看数据类型.

1.instanceof

instanceof返回一个布尔值, 来表示是否是某个类型的实例.

举个栗子, 检查_id属性值是否为ObjectId类型.

mydoc._id instanceof ObjectId

显示

true

2.typeof

typeof返回数据类型

举个栗子, 查看_id属性的数据类型:

typeof mydoc._id

这里返回`object`类型而不是`ObjectId`类型.

7 参考文章

https://docs.mongodb.com/manual/core/shell-types/

8 相关文章

MongoDB中文文档

转载请保留原文链接.