You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB基于日期查询文档失败求助(版本6.0.12)

MongoDB日期查询失败的解决方法

问题原因

你插入文档时使用了Extended JSON格式的{"$date": 1322006400000},在Mongo Shell中执行该语句时,这个结构会被当作普通嵌套文档插入,而非Date类型的日期值。而查询语句用ISODate()生成的是Date类型,两者类型不匹配,导致无法匹配目标文档。

验证问题

先执行以下命令查看插入的文档结构,确认order_date的实际类型:

db.orders.findOne({_id: 6})

你会看到order_date字段的值是{ "$date": 1322006400000 },而非ISODate("2011-11-23T00:00:00Z")这样的日期类型。

解决步骤

  1. 修正插入语句(若未插入或可重新插入)
    使用Mongo Shell支持的日期构造方式插入文档:

    # 方式1:通过毫秒数创建Date对象
    db.orders.insertOne({ _id: 6, item: "chocaltes", qty: 1, price: 10, order_date: new Date(1322006400000) })
    # 方式2:直接用ISODate指定日期字符串
    db.orders.insertOne({ _id: 6, item: "chocaltes", qty: 1, price: 10, order_date: ISODate("2011-11-23T00:00:00Z") })
    
  2. 更新已插入的错误文档
    如果已经插入了格式错误的文档,执行以下命令将order_date字段转为正确的Date类型:

    db.orders.updateOne(
      { _id: 6 },
      { $set: { order_date: new Date(1322006400000) } }
    )
    
  3. 重新执行查询
    完成上述操作后,再运行你的查询语句即可返回目标文档:

    db.orders.find({ order_date: ISODate("2011-11-23T00:00:00Z") })
    

内容的提问来源于stack exchange,提问作者Satish Tunuguntla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:43:31