迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MongoDB >

在 MongoDB 中存储日期和时间

作者:迹忆客 最近更新:2023/05/10 浏览次数:

本文将讨论存储日期和时间的最佳方式。 这将详细解释 Date() 方法。

此外,将描述使用日期查询的不同方法。 ISODate 在 MongoDB 中不起作用的日期查询问题也将通过代码段的解释进行讨论。


使用 Date() 方法在 MongoDB 中存储日期和时间

Date() 将当前日期输出为字符串或 Date 对象。

new Date() 返回具有当前日期的 Date 对象。 ISODate 助手由 mongosh 包裹在这个对象周围; ISODate 采用 UTC(世界标准时间)。

您可以使用新的 Date() 函数 Object() { [native code] } 或 ISODate() 方法通过给出年份介于 0 和 9999 之间的 ISO-8601 日期字符串来定义特定日期。这些函数接受以下内容 格式:

  1. 具有提供日期的 ISODate 由 new Date("") 返回。
  2. new Date("") 指定客户端本地时区的 DateTime,并返回 ISODate 和 UTC 中的 DateTime。
  3. new Date(<integer>) 返回 ISODate 实例,其中 DateTime 指定自 UNIX 纪元(1970 年 1 月 1 日)以来的毫秒数。

MongoDB 中 Date() 方法的行为

日期对象在内部保存为一个带符号的 64 位整数,表示自 Unix 纪元以来的毫秒数。

并非所有数据库过程和驱动程序都支持完整的 64 位范围。 年份在 0 到 9999 之间的日期可以安全处理。

Date() 方法的示例

如果 products 集合中不存在 _id 等于 1 的文档,以下代码将添加一个文档,并将字段 dateAdded 设置为当前日期:

db.products.updateOne(
    { _id: 1 },
    {
        $set: { item: "apple" },
        $setOnInsert: { dateAdded: new Date() }
    },
    { upsert: true }
)

使用 Date() 方法将日期作为字符串返回,如以下示例所示:

var myDateString = Date();

Mongosh 使用 ISODate 助手包装日期类型的对象; 但是,对象仍然是日期类型。

以下示例使用 new Date() 返回具有指定 UTC 日期时间的 Date 对象。

var myDate = new Date("2016-05-18T16:00:00Z");

您可以使用 MongoDB 中的 sort() 函数和 $sort 聚合来解决这个问题。 您可以使用此工具按升序或降序对数据进行排序。

例子:

db.posts.find().pretty()
{
    "_id" : 1,
    "title" : "MongoDB",
    "body" : "Hi there",
    "date" : "2021-01-01T00:00:00.000Z",
        "Country" : "United Kingdom"
}
{
    "_id" : 2,
    "title" : "MySQL",
    "body" : "Hello",
    "date" : ISODate("2020-01-01T00:00:00Z"),
        "Country" : "United States of America"
}
{
    "_id" : 3,
    "title" : "SQL",
    "body" : "World",
    "date" : ISODate("2021-01-01T00:00:00Z"),
        "Country" : "New Zealand"
}

一些数据被添加到 posts 集合中,日期字段将它们按升序排列,较早的日期首先出现。

db.posts.find().sort({ date: 1 }).pretty()
{
    "_id" : 1,
    "title" : "MongoDB",
    "body" : "Hi there",
    "date" : "2021-01-01T00:00:00.000Z",
        "Country" : "United Kingdom"
}
{
    "_id" : 2,
    "title" : "MySQL",
    "body" : "Hello",
    "date" : ISODate("2020-01-01T00:00:00Z"),
        "Country" : "United States of America"
}
{
    "_id" : 3,
    "title" : "SQL",
    "body" : "World",
    "date" : ISODate("2021-01-01T00:00:00Z"),
        "Country" : "New Zealand"
}

因为第一个文档有一个日期字符串而不是日期对象,所以日期字符串首先出现,即使文档 2 中的日期更晚。

MongoDB 无法运行的原因可能有多种,但您必须记住一些在 MongoDB 中按日期排序的过程。

  1. 永远记住,您将数据存储在一个集合中。
  2. 有两种方法可以在文档中存储日期字段 - Date() 和 ISODate()。
  3. 当您使用 sort() 方法对日期字段进行排序时,请检查您使用的是哪种数据类型。

例子:

db.document.insertOne({ "productId" : 1001, "productDeliveryDateTime": new Date() });
{
        "acknowledged" : true,
        "insertedId" : ObjectId("611c9e39e1fdc428cf238802")
}

在此示例中使用 Date() 字符串添加日期,集合名称是文档。 您可以使用 ISODate() 以相同的方式在文档中插入日期。


使用 ISODate() 在 MongoDB 中存储日期和时间

使用 $gte 运算符和 ISODate() 在 MongoDB 中使用 ISODate 实现日期查询。

让我们使用文档制作一个集合以更好地理解这一点。 以下是使用文档构建集合的查询:

> db.dateDemo.insertOne({"StudentName":"John","StudentAge":26,"AdmissionDate":new ISODate("2013-06-07")});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c8a65799064dcd4a68b70ea")
}

find() 函数可以显示集合中的所有文档。

询问:

db.dateDemo.find().pretty();

输出:

Date query

使用 ISODate() 进行日期查询:

> db.dateDemo.find({"AdmissionDate":{"$gte": ISODate("2013-06-07T00:00:00Z")}}).pretty();

输出:

Date query 1


总结

本文简要介绍了 Date() 方法。 之后,指出了使用 Date() 方法对集合进行排序的问题。

一个示例解释了日期查询如何与 MongoDB 中的 ISODate 一起使用。 此外,这表明在 MongoDB 中存储日期和时间的最佳格式是使用原生 JavaScript Date()ISODate() 格式,因为它在内部将其转换为 BSON 原生 Date 对象。

上一篇:MongoDB 中的分页

下一篇:如何卸载 MongoDB

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 MongoDB Shell 中列出所有数据库

发布时间:2023/05/11 浏览次数:75 分类:MongoDB

交互式 Mongo Shell 提供了多个用于获取数据的选项。 本文介绍了在 Mongo Shell 中列出数据库的几种不同方法。

MongoDB 中检查字段包含的字符串

发布时间:2023/05/11 浏览次数:137 分类:MongoDB

这篇文章解决了如何在 MongoDB 中使用正则表达式来确定字段是否包含字符串。在 MongoDB 中使用正则表达式 正则表达式 (regex) 是定义搜索模式的文本字符串。

在 MongoDB 中 upsert 更新插入

发布时间:2023/05/11 浏览次数:162 分类:MongoDB

在 MongoDB 中,upsert 结合了更新和插入命令。 它可以在 update() 和 findAndModify() 操作中使用。MongoDB 中的 upsert 查询 upsert 采用单个布尔参数。

如何卸载 MongoDB

发布时间:2023/05/11 浏览次数:180 分类:MongoDB

要从您的计算机中卸载 MongoDB,您必须先删除 MongoDB 服务、数据库和日志文件。使用这篇 MongoDB 文章,您将能够从 Ubuntu Linux、Mac 和 Windows 卸载 MongoDB。 请务必保留数据备份,因为一旦卸载,便

MongoDB 中的分页

发布时间:2023/05/11 浏览次数:140 分类:MongoDB

这篇文章将介绍什么是 MongoDB 中的分页。 为什么在 MongoDB 中需要分页以及在 MongoDB 中完成分页的不同方法或方式是什么。

MongoDB 中的 $unset 运算符

发布时间:2023/05/10 浏览次数:136 分类:MongoDB

本文将讨论 $unset 运算符在 MongoDB 中的工作原理。 此外,我们将演示使用此运算符从 MongoDB 集合中的所有文档中删除一个字段。MongoDB 中的 $unset 运算符 $unset 是用于从实体中删除字段的运算符。

MongoDB 中的 $ne 运算符

发布时间:2023/05/10 浏览次数:82 分类:MongoDB

本文将讨论 $ne 运算符如何在 MongoDB 中工作。 另外,我们会列举它与$not操作符的区别。MongoDB 中的 $ne 运算符 $ne 是MongoDB中的一个运算符,代表不等于。

MongoDB $Set 运算符

发布时间:2023/05/10 浏览次数:54 分类:MongoDB

在本文中,我们将学习如何使用 $set 运算符部分更新 MongoDB 中的对象,以便新对象与现有对象重叠/合并。

MongoDB 中 $push 和 $addToSet 的区别

发布时间:2023/05/10 浏览次数:105 分类:MongoDB

这篇指导文章将告诉您什么是 MongoDB 中的运算符以及它们是如何描述的。 此外,对 $push 和 $addToSet 运算符进行了简要的详细说明。 $push 和 $addToSet 之间的区别通过代码段详细说明。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便