MongoDB “empty” or NULL Date



我将开始在一个项目中使用MongoDB,并做了以下观察:"日期"必须是有效的时间点,不能为 NULL。

使用 MongoDB,我们无法存储 NULL日期,所以我猜最好的办法是简单地从我们的文档中排除日期字段

例如,如果我有一个"汽车"文档和一个名为">date_sold"的字段。 如果汽车尚未售出,我只需从文档中排除此字段。 汽车售出后,我可以添加"date_sold"字段

通过执行上述操作,我假设我可以查询已售出或未售出汽车的记录。 这是在MongoDB中处理"空"或空日期的推荐方法吗?

附言 我的困惑源于这样一个事实,即由于SQL具有模式,因此日期或日期时间字段可以存储为NULL,但是在MongoDB中,"Date"字段不能为NULL,并且必须是有效的时间点。

当没有要存储的日期时省略日期字段在MongoDB中工作正常,这与传统的SQL数据库不同,传统的SQL数据库的每个记录/文档都必须遵循相同的模式。

您可以使用$exists来测试该字段中的值。

MongoDB 类型是 BSON

如果你去那里输入DATE,你会读到:

BSON Date 是一个 64 位整数,表示 自 Unix 纪元(1970 年 1 月 1 日(以来的毫秒数。这导致 可表示的日期范围为大约 2.9 亿年,以及 前途。

因此,您需要为每个数据类型定义本身提供一个"时间点"。

通常 Unix 纪元 ->Jan 1, 1970是用作null的那个,以便在大多数处理此类日期的数据库系统上遵循良好实践(如果您不需要处理与这些日期一样古老的日期(。

还要记住这一点:

BSON 日期类型已签名。负值表示 1970 年之前的日期。

因此,您还可以为您的开发设置一个约定默认值,即为此目的而过去的默认值。例如:

Jan 1, 1900

我希望这能向您澄清。

还有一个提示:通常json结构可能会在不同的步骤上得到验证,我强烈建议您维护该字段,并使用约定值来表示系统下的NULL

最新更新