8.mongo命令行中的数据类型
最新内容会在源站更新.
转载请保留原文链接: http://dashidan.com/article/mongodb/basic/8.html
MongoDB采用BSON
数据类型, 比JSON
格式提供了更多的数据类型. 数据库驱动提供了本地方法支持这些数据类型, 并且mongo命令行也提供了一些帮助类来使用这些数据类型.
① 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
② ObjectId
mongo命令行提供了ObjectId()
包装类来封装ObjectId
数据类型.
生成一个新的ObjectId,输入:
new ObjectId
显示:
ObjectId("59f1ac932cacee0f03e35dc6")
③ 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.采用‘
i
n
c
‘
操
作
符
对
‘
N
u
m
b
e
r
L
o
n
g
‘
对
象
来
进
行
‘
f
l
o
a
t
‘
类
型
运
算
,
结
果
数
据
变
为
‘
f
l
o
a
t
‘
类
.
举
例
:
1.
采
用
‘
inc`操作符加5, `5`默认为浮点型.
db.collection.updateOne( { _id: 10 },
{ $inc: { calc: 5 } } )
2.查找修改结果
db.collection.findOne( { _id: 10 } )
3.显示结果
{ "_id" : 10, "calc" : 2555555000010 }
④ NumberInt
mongo命令默认所有的数字类型数字为64位浮点型, 提供了NumberInt()
构造函数来生成32位整数.
理论同NumberLong
.
⑤ NumberDecimal
mongo命令默认所有的数字类型数字为64位浮点型, 提供了NumberDecimal()
构造函数来指定128位浮点型十进制小数.
<h4>浮点数满足了绝大部分应用场景,不再额外介绍这个.可以参考原文.</h4>
⑥ mongo命令查看类型
mongo命令中可以通过instanceof
和typeof
操作符来查看数据类型.
1.instanceof
instanceof
返回一个布尔值, 来表示是否是某个类型的实例.
举个栗子, 检查_id
属性值是否为ObjectId
类型.
mydoc._id instanceof ObjectId
显示
true
2.typeof
typeof
返回数据类型
举个栗子, 查看_id
属性的数据类型:
typeof mydoc._id
这里返回object
类型而不是ObjectId
类型.
⑦ 参考文章
https://docs.mongodb.com/manual/core/shell-types/