ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

【MongoDB数据类型】 �

2019-08-24 14:57:51  阅读:264  来源: 互联网

标签:name ObjectId MongoDB db userinfo Date 数据类型 id


目录

原文: http://blog.gqylpy.com/gqy/352

@(MongoDB数据类型)

在开始之前,我们先看看MongoDB有哪些数据类型
*
1. Object ID**
Documents(行)自动生成的 _id


2. String
字符串,必须是UTF-8


3. Boolean
布尔值,true/false


4. Integer
整数,有int32与int64之分,一般我们使用int32(正负21亿)


5. Double
浮点数MongoDB中没有float类型,所有小数都是Double类型


6. Arrays
数组/列表,一般在多个值对应一个键时使用


7. Object
相当于Python中的dict


8. TimeStamp
时间戳


9. Date
存储当前日期或时间,unix时间格式
我们一般不使用这个Date类型,时间戳可以秒杀一切时间类型



10. Null
空数据类型,一个特殊的概念,None Null








开始表演

一些比较好理解的数据类型,我们就直接跳过。

1. Object ID

> db.userinfo.findOne()
{ "_id" : ObjectId("5c20a72d844443be585559a4"), "name" : "张三" }

**"_id" : ObjectId("5c20a72d844443be585559a4")**

这是MongoDB生成的类似关系型DB表主键的唯一key,具体由24个字节组成:



"5c20a72d" 时间戳,产生这条数据的时间

"844443" 产生这条数据的机器编码


"be58" 进程ID,多进程存储数据时很有用


"5559a4" 计数器,注意:计数器的数字可能会重复



以上四种标示拼凑成世界上唯一的Object ID

只要是支持MongoDB的语言,都会有一个或多个方法对Object ID进行转换


⚠️注意:此类型不可以被JSON序列化


5. Double

> db.userinfo.find()
{ "_id" : ObjectId("5c20a72d844443be585559a4"), "name" : "张三", "height" : 1.82 }

MongoDB中没有float类型,所有的小数是都Double类型.

6. Arrays

{
    "_id" : ObjectId("5c20a72d844443be585559a4"),
    "name" : "张三",
    "height" : 1.82,
    "hobby" : [
        "抽烟",
        "喝酒",
        "汤头"
    ]  ⚠️
}

数组/列表,一般在多个值对应一个键时使用.

7. Object

> db.userinfo.findOne({name: "李四"})
{
    "_id" : ObjectId("5c20ad9a844443be585559a5"),
    "name" : "李四",
    "info" : {
        "gender" : "男",
        "height" : 1.82,
        "weight" : 60
    }  ⚠️
}

相当于Python中的dict

8. TimeStamp

> db.userinfo.insertOne({name: "张三", timestamp: Timestamp()})

> db.userinfo.findOne({name: "张三"})
{
    "_id" : ObjectId("5c20c48312af10035a00d668"),
    "name" : "张三",
    "timestamp" : Timestamp(1545651331, 1)  # 时间戳
}

9. Date

Date() 人类可识别的时间格式

> db.userinfo.insertOne({name: "李四", date: Date()})

> db.userinfo.findOne({name: "李四"})
{
    "_id" : ObjectId("5c20c53612af10035a00d669"),
    "name" : "李四",
    "date" : "Mon Dec 24 2018 19:38:30 GMT+0800 (CST)"  # 当前日期时间
}

new Date().valueOf() 转换为当前时间戳时间

> db.userinfo.insertOne({name: "李四", timestamp: new Date().valueOf()})

> db.userinfo.findOne({name: "李四"})
{
    "_id" : ObjectId("5c20c73412af10035a00d66e"),
    "name" : "李四",
    "timestamp" : 1545652020922  # 时间戳
}

new Date() 构建一个格林尼治时间
格林尼治时间和Date()时间相差8小时,我们是+8时区,也就是时差相差8,所以+8小时就是系统当前时间.

> db.userinfo.insertOne({name: "张三", new_data: new Date()})

> db.userinfo.findOne({name: "张三"})
{
    "_id" : ObjectId("5c20c87712af10035a00d66f"),
    "name" : "张三",
    "new_data" : ISODate("2018-12-24T11:52:23.256Z")  # 格林尼治时间
}

还有ISODate(),同样也是构建一个格林尼治时间

> ISODate()
ISODate("2018-12-24T11:59:14.740Z")

# 转换为时间戳
> ISODate().valueOf()
1545652789707

==MongoDB存储时间类型数据时,都是先将其转换为UTC时间,然后再存储到数据库中.==

10. Null

> db.userinfo.findOne({姓名: "王五"})
{ "_id" : ObjectId("5c20ae64844443be585559a6"), "name" : "王五", "hobby" : null }

空数据类型,一个特殊的概念, None Null.

原文: http://blog.gqylpy.com/gqy/352

标签:name,ObjectId,MongoDB,db,userinfo,Date,数据类型,id
来源: https://www.cnblogs.com/mypath1/p/11404601.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有