当前位置: 首页 > 知识库问答 >
问题:

按年龄查询mongodb中的文档

洪俊能
2023-03-14

每月,我想从我的一个集合中删除所有超过1个月的文档。集合中的示例文档如下所示:

{
    _id: ObjectId("56e75f1ce851695805ead8ae"),
    createDate: ISODate("2016-03-15T01:02:20.821Z"),
    foo: "bar"
}

我希望自动安排此任务的执行,这样它就不需要人工输入(例如,作为cron作业),因此我希望它具有尽可能少的逻辑

如何查询createDate早于1个月的文档?我曾想过尝试这样的事情:

db.col.find({createDate: {$lt: ISODate(ISODate().getTime() - 1000*3600*24*30)}});

。。。其中,我创建了一个当前时间减去1个月毫秒的新ISODate,但它不会返回任何数据。这也有点难看,即使它确实有用。我将如何实现这一点?

共有2个答案

洪黎昕
2023-03-14

嗯,我想出来了。看来我的语法有点错误。。。老实说,我并不完全确定这个正确的语法是如何工作的,但它满足了我的需要。

db.col.find({createDate: {$lt: new Date((new Date())-1000*3600*24*30)}});
帅煌
2023-03-14

您可以创建TTS索引以删除超过30天的数据。30天后它会自动删除数据。

db.col.create索引({"createDate": 1},{exireAfter秒: 2592000})

 类似资料:
  • 问题内容: 我想从Oracle表的DOB(出生日期)字段中计算当前的人的年龄。 DOB字段的数据类型为varchar,其日期以“ DD-MON-YY”格式存储。 当我从日期算起一个人的当前年龄时,查询将返回负数。另外,我观察到,如果日期为13到49年,则结果为负。 例子 查询执行以供参考 任何帮助表示赞赏! 问题答案: 为了解决21世纪的问题,只需稍微修改@the_silk的答案即可: 请注意,尽

  • 主要内容:find() 方法,pretty() 方法,findOne() 方法,条件查询,AND条件语句,OR 条件语句,AND 和 OR 联合使用前面我们介绍了怎么将文档插入到集合中,本节我们来介绍一下如何从集合中查询指定的文档。 find() 方法 想要查询集合中的文档,可以使用 MongoDB 中的 find() 方法,find() 方法可以将查询结果以非结构化的方式展示出来,其语法格式如下: db.collection_name.find(query, projection) 语法说明如

  • 这是我的代码,从这里采取:计算年龄在JavaScript 它如何继续与月和日,如: 用户生日是:2010/04/29 结果应该是这样的:2岁4个月5天。 演示:http://jsfiddle.net/jFxb5/

  • 问题内容: 我在集合中将值存储为java.util.Date(),但是当我查询以获取两个特定日期之间的值时,最终得到的值超出了范围。这是我的代码: 插入 查询 当我在和之间查询时(基本上是fromDate = toDate),我得到的日期绝对不可能的对象。我在这里想念什么? 问题答案: 您正在执行的操作是仅在键覆盖中使用丢失运算符进行查询。您想要的是:

  • 问题内容: 我有一个InnoDB表和一个列索引,就像这样 我只想了解这些查询背后的真实情况: 和 据我了解,第一个MySQL将使用列寿命索引,而第二个则无法使用。是吗?哪个对性能更好? 问题答案: 这两个查询都将使用索引。 查询A将转换为: 查询B将转换为 因此查询A将使用OR进行3个测试。 查询B将使用AND进行2个测试。 查询B更快。 通常,使用的查询比使用的查询要快。 另外,查询B执行的测试

  • 此问题是由打字错误或无法再复制的问题引起的。虽然这里可能有类似的问题,但这一问题的解决方式不太可能对未来的读者有所帮助。 我正在尝试向mongoDB查询“日期”在两个日期之间的文档。示例数据是: 我的Java代码是: 但游标对象没有结果。 查询对象如下所示: 我怀疑问题是DB中的日期表示。对此有什么建议吗?