跳转至

3. 数据类型

支持的类型

类型              值

整型              整数 1 2 3
布尔类型           true false
浮点型             小数
Array             数组
Date              时间日期
Timestamp         时间戳
String            字符串
Symbol            特殊字符串
Binary data       二进制字串
Null              null空值
Object            内部文档(对象)
ObjectId          自动生成ID标记
regex             正则字串
code              js代码


"_id" : ObjectId("5ba076bfcb98b3cae2e289db")
_id: 当mongodb插入文档时如果不指定_id域则自动生成_id域.值如果不自己
     指定即会自动生成一个ObjectId值

5ba076bfcb98b3cae2e289db
24位,使用ObjectId经过算法处理保证其唯一性
8位  文档创建时间
6位    机器ID
4位  进程id
6位  计数器

时间数据类型

mongo中存储时间大多为ISODate

存储当前时间方法

  1. new Date()
    自动生成当前时间
    db.class2.insert({book:'Python入门', date:new Date()})
    
  2. ISODate()

    自动生成当前时间
    db.class2.insert({book:'Python精通', date: ISODate()})
    

  3. Date()

    生成当前时间,将系统时间转化为字符串
    db.class2.insert({book:'Python疯狂', date: Date()})
    

指定时间存储

ISODate()

功能:生成mongo标准时间类型   
参数:不传参默认为当前时间   
    传参表示指定时间   
        '2018-01-01 12:12:12'   
        '20180101 12:12:12'   
        '20180101'   

db.class2.insert({book:'Python崩溃', date: ISODate('2018-01-01 12:12:12')})

时间戳

valueOf()

获取某个时间的时间戳
db.class2.insert({book:'Python涅磐', date: ISODate().valueOf()})

Null类型

值null

  1. 如果某个域存在却没有值可以赋值为null

    db.class2.insert({book:'Python死去活来', price:null})

  2. 可以查找某个域不存在的情况

    db.class2.find({date:null})

Object

内部文档,文档对象类型

文档内部某个域的值还是一个文档数据, 则这个文档内部就是文档类型数据
db.class3.insert({_id:1, name:'鲁迅', sex:'男', book:{title:'狂人日记', price:46.8}})
db.class3.insert({_id:2, name:'钱钟书', sex:'男', book:{title:'围城', price:46.8}})
db.class3.insert({_id:3, name:'老舍', sex:'男', book:{title:'骆驼祥子', price:46.8}})

通常使用 外部文档域名.引用内部文档域名

db.class3.find({'book.title':'狂人日记'})
db.class3.update({'book.title':'围城'}, {$set:{"book.price":48.8}})

通过数组下标直接操作某一项

db.class3.find({"array.0":{$gt: 60}})