【问题标题】:Delete the mongo document based on date stamp根据日期戳删除mongo文档
【发布时间】:2020-07-05 14:15:57
【问题描述】:

我在 json 对象中具有以下日期和时间格式的结构,我想删除早于 2019 年创建的文档。您可以看到带有日期和时间戳的 created 键。我们可以忽略时机。我将如何删除 2020 年之前的所有文档。

db.collection.find({}).pretty()
{
"created" : "6/6/2020, 6:37:15 PM",
"created_by" : "aaaaa",
"last_updated_by" : "aaaa"
}

{
"created" : "6/6/2019, 6:37:15 PM",
"created_by" : "bbbbb",
"last_updated_by" : "bbbbb"
}

{
"created" : "6/6/2018, 6:37:15 PM",
"created_by" : "ccccc",
"last_updated" : "6/6/2018, 6:51:47 PM",
"last_updated_by" : "ccccc"
}

我正在使用以下命令来删除文档,但它总是返回空的。

【问题讨论】:

  • 我正在执行以下命令。 D b。 collection.remove( { created : {"$lt" : new Date(2020, 1, 1) } })
  • 这不起作用,因为当您在查询中传递 Date 时,您的日期被存储为字符串。您需要先转换数据

标签: json mongodb mongoose


【解决方案1】:

如果您想以编程方式处理日期,将它们存储为 ISO8601 国际格式(伪正确地排序为字符串)或将它们存储为 BSON 日期类型会容易得多。

在这种情况下,您可以通过从字符串中提取年份、将其转换为 int 并进行比较,从而非常接近您想要的结果。

db.collection.remove({$expr:{$lt:[{$toInt:{$arrayElemAt:[{$split:[{$arrayElemAt:[{$split:["$created",","]},0]},"/"]},2] }},2019]}})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 2019-10-06
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    相关资源
    最近更新 更多