MongoDB“空”或NULL日期

时间:2019-10-07 16:28:54

标签: mongodb

我将开始在项目中使用MongoDB并进行以下观察:  “日期”必须是有效的时间点,并且不能为空

对于MongoDB,我们不能存储空日期,所以我猜测最好的做法是从文档中排除日期字段

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

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

P.S。我感到困惑的原因是,由于SQL具有模式,所以日期或日期时间字段可以存储为NULL,但是在MongoDB中,“日期”字段不能为NULL,并且必须是有效的时间点。

2 个答案:

答案 0 :(得分:3)

MongoDB类型为BSON

如果您在此处输入DATE,您将看到:

  

BSON日期是一个64位整数,表示   自Unix时代(1970年1月1日)以来的毫秒数。这导致   可追溯到大约2.9亿年的日期范围,以及   未来。

因此,您需要为每个数据类型定义本身指定一个“时间点”。

通常,Unix时期-> Jan 1, 1970用作null,以遵循大多数处理此类日期的数据库系统上的良好做法(如果您不需要工作,日期与那些日期一样古老。

请记住这一点:

  

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

因此,您也可以为开发设置约定的默认值,而这仅是过去的目的。例如:

Jan 1, 1900

我希望这可以澄清您。

  

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

答案 1 :(得分:3)

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

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