从 MongoDB Compass 聚合结果中排除“0”值

Excluding "0" values from MongoDB Compass aggregation result

提问人:alanandrade01 提问时间:6/24/2023 更新时间:6/25/2023 访问量:40

问:

我正在MongoDB Compass中执行聚合,我想从结果中排除“0”的值。目前,我的聚合返回以下日期值:“1948-12-08 00:00:00.000”。如何修改聚合以从结果中排除这些“0”值?

这是我当前聚合的图片:

我尝试了各种方法,例如将 $match 与 $ne 一起使用,但我没有成功排除“0”值。任何指导或建议将不胜感激。

我期望得到:“1948-12-08”年、月和日。

mongodb 聚合 日期转换 mongodb-compass

评论

2赞 user20042973 6/24/2023
操作员可能。但是,这些值是存储为日期还是字符串?$dateTrunc
0赞 alanandrade01 6/24/2023
这些值存储为字符串。但我会尝试$dateTrunc。

答:

0赞 user20042973 6/24/2023 #1

一般来说,我会说将日期(仅)存储为字符串类型是一个错误。除其他外,它可能会使查询和显示数据更加困难。

也就是说,您可以使用$split运算符(与$arrayElemAt运算符结合使用)来获得所需的结果。它可能看起来像这样:

db.collection.aggregate([
  {
    "$addFields": {
      "date": {
        "$arrayElemAt": [
          {
            "$split": [
              "$date",
              " "
            ]
          },
          0
        ]
      }
    }
  }
])

游乐场演示在这里

您应该预置一个阶段来执行您需要执行的任何筛选操作。$match

评论

0赞 alanandrade01 6/25/2023
非常好!你是对的,现在它起作用了。谢谢。
0赞 user20042973 6/25/2023
很高兴听到它!如果它解决了原始问题,请接受答案,以向其他人表明该问题已得到解决