【问题标题】:The date is not updated in MongoDB日期未在 MongoDB 中更新
【发布时间】:2021-01-20 00:40:06
【问题描述】:

当尝试更新 MongoDB 文档中的日期时,没有任何更新。

要更新,我向 NodeJS 发送请求,如下所示:

collection.updateOne(
   { _id: ObjectId(...) },
   { $set: { 'field1.field2.0.date': new Date('2020-02-01T00:00:00Z') } },
   callback
)

任务使用 npm 包 mongodb@2.3.26MongoDB 3.6.20

我尝试将 '2020-02-01T00:00:00Z' 作为值发送 - 它没有更新。我试图更新数据库版本 - 它没有帮助。我尝试更新驱动程序版本 - 没有帮助。

有趣的是,这样的请求会通过 Robo3T 并正确更新值。

您能告诉我如何更新 MongoDB 文档中的日期吗?


UPD:文档结构

const document = {
    field1: {
        exp: 1,
        field2: [
            {
                name: "test",
                date: 2019-10-01 00:00:00.000Z
            }
        ]
    },
    settings: {
        sharedTill: 2022-10-01 00:00:00.000Z
    },
    updatedBy: 'Vadim Prokopchuk'
}

UPD2:添加了来自 MongoDB 的响应

MongoDB返回数据,不返回错误。

【问题讨论】:

  • 你能显示文档的结构(所有字段)吗?
  • 您是否尝试过将一些日志放入回调中?很可能错误被删除(出于某种原因)并且文档没有更新。文档结构很好

标签: node.js mongodb


【解决方案1】:

您使用的语法不正确。 参考下面的查询,它会工作

collection.updateOne(
   { _id: ObjectId(...) , 'field1.field2.name':"test"},
   { $set: { 'field1.field2.$.date': new Date('2020-02-01T00:00:00Z') } },
   callback
)

在这里,我们正在查找与我们的条件匹配的数组元素,然后更新该数组特定元素的日期。

【讨论】:

  • 如果我使用了错误的语法,为什么我的请求在 Robo3T 中成功完成?
  • 没有找到匹配的元素,所以继续往下看。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 2022-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多