【问题标题】:MongoDB: can't convert from BSON type String to Date (16006)MongoDB:无法从 BSON 类型字符串转换为日期 (16006)
【发布时间】:2017-09-23 15:34:15
【问题描述】:

我从 Mongodb 聚合操作中得到这个异常:

无法从 BSON 类型字符串转换为日期 (16006))。

我看到有关同一主题的其他问题,但我非常确定以下代码中的字段“日期”保存为日期类型字段。这是我想要做的:

db.schemes.aggregate([
  {"$project": {
      date_day: {$dayOfMonth: "$date"}, 
      date_month: {$month: "$date"}, 
      date_year: {$year: "$date"},
      net_asset: "$net_asset"
  }},
  {"$match": {scheme_code: "ABC"}},
  {$group: {
    _id: {
      date_month: "$date_month", 
      date_year: "$date_year"}, 
      net_asset: {$first: "$net_asset"}, 
      day_date: {$first: "$date_day"}
    }
  }
])

这是一个示例文档:

db.schemes.findOne()
{
    "_id": ObjectId("586a87d5ab0de166ea000001"),
    "scheme_code": "H01",
    "scheme_name": "ABC",
    "date": ISODate("2016-12-28T00:00:00Z"),
    "net_asset": 48.452,
    "updated_at": ISODate("2017-01-02T17:03:17.264Z"),
    "created_at": ISODate("2017-01-02T17:03:17.264Z")
}

另外请注意,如果最后一个组运算符被删除,则不会发生错误,因此与此有关。

任何关于如何调试这个的指针将不胜感激。

谢谢。

【问题讨论】:

  • 嗨,伊修;我可以提出两个请求吗?您能否在 mongo shell 中发布一个等效聚合的示例?这对于非 Rails 用户来说更容易理解。其次,您能否发布一个您正在聚合的文档的示例,让每个人都清楚地看到字段和数据类型是什么?
  • 嗨 @VinceBowdren 刚刚添加了 Mongo 参考。另请注意,如果我删除最后一个组运算符,一切都会正常运行。但是,组对我的要求非常重要。稍后编辑示例文档的帖子。

标签: mongodb date


【解决方案1】:

在项目解决问题之前进行匹配。

【讨论】:

  • 我看不出它为什么会导致此错误消息或它与group 有任何关系,但match 不会以原始顺序失败,因为该字段没有管道中的对象不再存在?您已在project...中删除它(尚未包含它)...
猜你喜欢
  • 2017-11-04
  • 2018-05-24
  • 2021-03-22
  • 2018-03-20
  • 2013-01-25
  • 2015-04-09
  • 2013-04-18
  • 2017-06-17
相关资源
最近更新 更多