我有以下数据。
{
deviceID: 186,
date: "2014-3-15"
}
{
deviceID: 186,
date: "2014-3-14"
}
{
deviceID: 186,
date: "2014-3-13"
}以及一些较低的日期,如2014-3-9 , 8 ,7 ,6等。
在做db.coll.remove({date:{$lte:"2014-3-5"}})时
Mongo也去掉了15,14,13,但保留了个位数的日期。这是不是因为日期是一个字符串?
我不知道如何格式化日期,以便我可以删除所有低于某个日期的日期。
这应该是一个清理过程,删除日期早于指定日期的所有文档。
发布于 2014-03-15 17:58:26
这是因为您正在查询的日期字段是一个字符串字段,而不是日期()。在您的mongo文档中,将javascript日期对象插入到日期字段中,而不是自定义日期字符串。
喜欢
{ deviceID: 186,,"date": new Date(2012, 7, 14) }在执行remove时,如下所示
db.coll.remove({date:{$lte:new Date(2012, 7, 14)}})发布于 2017-11-08 09:23:06
如果要从MongoDB中删除早于指定日期的数据,则必须确保该日期。
要检查输入的格式是否正确,最简单的方法是在查询中使用它之前对其进行测试。
例如,如果您想在Mongo shell中获取ISODate格式的当前日期,只需输入new Date,您就会获得Mongo格式的当前日期。
我已经在Mongo shell中尝试了以下内容:
new Date(2017, 11, 1)然后它会返回
ISODate("2017-11-30T16:00:00Z")这不是我想要的。
我想要的是在2017年11月1日之前删除数据。
以下是对我有效的方法:
new Date("2017-11-01")然后返回:
ISODate("2017-11-01T00:00:00Z")这就是我想要的。
发布于 2014-03-15 17:59:11
这是因为您正在以错误的格式存储数据。你有一个字符串,字符串'15'比字符串'5'小。将开头的字符串转换为日期(请阅读here如何在mongo中使用日期)。
只有你才能用它来正确地比较你的日期:
db.coll.remove({
date:{
$lte : new Date(2012, 7, 14)
}
})https://stackoverflow.com/questions/22422178
复制相似问题