mongo date 类型

本文详细介绍了MongoDB中的Date类型与JavaScript Date类型的使用方法,包括构造方法、常用方法等,并对比了两者之间的区别。

mongo的date类型跟javascript的date类型一样,而javascript的date类型来源于java的java.util.Date,所以api基本一样,都有接收毫秒数的构造参数、获取毫秒数的getTime()。关于Date的用法有以下几个点

构造方法

无参构造

new Date()用来创建date对象,注意,new Date()不同于Date(),Date()只是调用了方法,没有创建对象,Date()方法返回时间字符串。

Date()
"Wed Oct 12 2016 20:31:34 GMT+0800 (中国标准时间)"

有参构造

Date提供了有参构造来接收参数,参数值是一个毫秒数整数值,表示从1970年1月1日子夜至今的毫秒数。因为计算毫秒数比较麻烦,所以Date提供了Date.UTC()和Date.parse()来返回毫秒数。

Date.parse()

Date.parse(string)参数是时间格式的字符串,一般来说按照 月/日/年 格式,也可以使用英语。

Date.parse("12/10/2016")
输出:1481299200000
var date = new Date(1481299200000)
输出:Sat Dec 10 2016 00:00:00 GMT+0800 (中国标准时间)

Date.UTC()

Date.UTC(年,月,日,时,分,秒,毫秒),UTC()方法也返回毫秒数,但是参数用来接收年、月、日、时、分、秒、毫秒。月的取值是0~11,这一点一定要注意;如果日不填,默认是1;其他默认是0。注意UTC()方法参数是不带有时区的,也就是说是GMT时间,由于在中国,所以创建的时间会多出8个小时。如

var d = new Date(Date.UTC(2016,9,20));
输出:Thu Oct 20 2016 08:00:00 GMT+0800 (中国标准时间)

从中很明显可以看出,多出8个小时。

日不填的情况,默认是1

var d = new Date(2016,9)
输出:"Wed Oct 12 2016 21:01:34 GMT+0800 (中国标准时间)"

为了简单起见,Date构造方法分别模仿了Date.parse()和Date.UTC(),

new Date("月/日/年") //模仿Date.parse()
new Date(年,月,日,时,分,秒,毫秒) //模仿Date.UTC()

但是Date(年,月,日,时,分,秒,毫秒) 与Date.UTC()不一样,Date(年,月,日,时,分,秒,毫秒) 带有时区,如

var d = new Date(2016,9,20);
输出:Thu Oct 20 2016 00:00:00 GMT+0800 (中国标准时间)

常用的方法

Date常用的方法就是返回年-月-日 时:分:秒格式的日期,

var date=new Date(2016,10,20);
date.getFullYear()+"-"+(date.getMonth()+1)+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds()

输出:"2016-11-20 0:0:0"

mongo中的date

有了以上基础,就能懂mongo中的date了。一定要注意mongo中的date字段,数据类型是date,而不是字符串,所以mongo中查询时间字段时,应该使用new Date()

这里写图片描述

很明显,过滤掉了8月份的数据。
这里写图片描述

### MongoDB 数据类型列表及用法 MongoDB 是一种文档型数据库,使用 BSON(Binary JSON)作为其数据存储和传输格式[^2]。BSON 不仅支持标准的 JSON 数据类型,还扩展了更多类型以满足复杂的应用需求。以下是 MongoDB 支持的主要数据类型及其用法: #### 1. 数值类型 MongoDB 支持两种数值类型:双精度浮点数和整数。 - **双精度浮点数**:默认情况下,MongoDB 使用 64 位浮点数来表示数值类型[^4]。例如: ```javascript db.numbers.insertOne({ value: 3.14 }); ``` - **整数类型**: - `NumberInt`:用于存储 32 位有符号整数。 - `NumberLong`:用于存储 64 位有符号整数[^4]。例如: ```javascript db.numbers.insertOne({ value: NumberInt(42) }); db.numbers.insertOne({ value: NumberLong(9223372036854775807) }); ``` #### 2. 字符串类型 字符串是 MongoDB 中最常见的数据类型之一,必须是 UTF-8 编码的文本[^4]。例如: ```javascript db.strings.insertOne({ text: "Hello, MongoDB!" }); ``` #### 3. 布尔类型 布尔类型用于存储真或假的值。例如: ```javascript db.booleans.insertOne({ isActive: true }); ``` #### 4. 日期类型 MongoDB 的日期类型使用 UTC 时间进行存储,即 +0 时区的时间[^1]。可以通过 `Date()`、`new Date()` 或 `ISODate()` 来插入日期数据。例如: ```javascript db.dates.insertMany([ { data1: new Date() }, { data2: ISODate("2023-06-28T09:30:51.940Z") } ]); ``` #### 5. 对象类型 对象类型用于嵌套文档。例如: ```javascript db.objects.insertOne({ name: "John Doe", address: { city: "New York", zip: "10001" } }); ``` #### 6. 数组类型 数组类型用于存储有序的值集合。例如: ```javascript db.arrays.insertOne({ items: [1, 2, 3] }); ``` #### 7. 二进制数据类型 MongoDB 提供了对二进制数据的支持,适用于存储文件或其他非结构化数据。例如: ```javascript db.binaries.insertOne({ file: BinData(0, "c3RyaW5n") }); // Base64 编码的字符串 ``` #### 8. 对象标识符(ObjectId) ObjectId 是 MongoDB 自动生成的唯一标识符,通常用于 `_id` 字段。例如: ```javascript db.ids.insertOne({ _id: ObjectId(), name: "Unique Object" }); ``` #### 9. 空值类型 空值类型用于表示字段不存在的情况。例如: ```javascript db.nulls.insertOne({ value: null }); ``` #### 10. 正则表达式类型 正则表达式类型用于模式匹配。例如: ```javascript db.regexes.insertOne({ pattern: /mongo/i }); ``` #### 11. 用户定义类型 除了内置类型外,MongoDB 还允许用户通过扩展 BSON 格式定义自定义类型。 --- ### 示例代码 以下是一个综合示例,展示如何在 MongoDB 中使用多种数据类型: ```javascript db.examples.insertOne({ number: 3.14, integer: NumberInt(42), longInteger: NumberLong(9223372036854775807), string: "Hello, World!", boolean: true, date: new Date(), object: { key: "value" }, array: [1, 2, 3], binary: BinData(0, "c3RyaW5n"), objectId: ObjectId(), nullValue: null, regex: /mongo/i }); ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值