为了账号安全,请及时绑定邮箱和手机立即绑定

按当月过滤 mongodb 数据

按当月过滤 mongodb 数据

蝴蝶不菲 2022-11-27 16:44:09
我尝试在 mongodb 中按月查询查找,我在 Daq 集合中的数据是这样的:"       _id" : ObjectId("5f14081c14c08a261b816d57"),    "battery_voltage" : 3673,    "total_usage" : 0.483,    "signal" : 14,    "samplehour" : "2020-07-18T23:59:59-04:00",    "sampledate" : "2020-07-18T23:59:59-04:00",这是我的查询:let n = moment().month()let test = await Daq.aggregate([    {$addFields: {  "month" : {$month: '$sampledate'}}},    {$match: { month: n}}]);我也已经尝试过了:let n = moment().month()let test = await Daq.aggregate([  {$project: { "month" : {$month: '$sampledate'}}},  {$match: { month: n}}]);但结果总是"message": "can't convert from BSON type string to Date"你们如何解决这个问题?
查看完整描述

1 回答

?
MM们

TA贡献1886条经验 获得超2个赞

您sampledate没有保存为日期对象,而是保存为字符串。您首先需要将其转换为日期,然后您可以使用诸如$month.


  $addFields: {

    "month": {

      $month: {

        $toDate: "$sampledate"

      }

    }

  }

https://mongoplayground.net/p/XOdfYtEXqLc


我假设它是一个字符串这一事实实际上是您的插入代码中的一个错误,您可能应该修复它。


查看完整回答
反对 回复 2022-11-27
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信