文章标题

来源:互联网 发布:嘉靖皇帝知乎 编辑:程序博客网 时间:2024/06/04 17:29

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

转载请保留原文链接: http://dashidan.com/article/mongodb/basic/mongo命令行中的数据类型.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();myDatemyDateInitUsingISODateWrapper
显示:
ISODate("2017-10-26T09:30:19.073Z")ISODate("2017-10-26T09:30:19.586Z")
用instanceof验证数据类型:
myDate instanceof DatemyDateInitUsingISODateWrapper instanceof Date
显示:
truetrue

② 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") }
如果采用`incNumberLongfloat,float.: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命令中可以通过instanceoftypeof操作符来查看数据类型.

###1.instanceof`instanceof`返回一个布尔值, 来表示是否是某个类型的实例.举个栗子, 检查`_id`属性值是否为`ObjectId`类型.
mydoc._id instanceof ObjectId
显示
true
###2.typeof`typeof`返回数据类型举个栗子, 查看`_id`属性的数据类型:
typeof mydoc._id
<h4>这里返回`object`类型而不是`ObjectId`类型.</h4>

⑦ 参考文章

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

⑧ 相关文章

MongoDB中文文档

原创粉丝点击