在Mongo shell中,我将如何过滤今天(或特定日期)添加的记录?我没有新记录时间戳的特定字段,但我想它可以从ObjectID恢复。
要获取从今天开始的所有记录:
var startOfToday = new Date();
startOfToday.setHours(0,0,0,0);
// creates ObjectId() from date:
var _id = Math.floor(startOfToday.getTime() / 1000).toString(16) + "0000000000000000";
> db.collection("records")
.find( { _id: { $gte: ObjectId(_id) } });
要获取给定时间段(例如:昨天)的所有记录:
var yesterdayStart = new Date();
yesterdayStart.setDate(yesterdayStart.getDate() - 1);
yesterdayStart.setHours(0,0,0,0);
var startId = Math.floor(yesterdayStart.getTime() / 1000).toString(16) + "0000000000000000";
var yesterdayEnd = new Date();
yesterdayEnd.setDate(yesterdayEnd.getDate() - 1);
yesterdayEnd.setHours(23,59,59,999);
var endId = Math.floor(yesterdayEnd.getTime() / 1000).toString(16) + "0000000000000000";
> db.collection("records")
.find( { _id: {
$gte: ObjectId(startId),
$lte: ObjectId(endId)
}
}
);
我们可以使用$where
db.collection.find(
{ $where: "this._id.getTimestamp() >= ISODate('2017-02-25')" }
)
要获取今天的文档,或者最好是从最后一个午夜开始:
db.collection.find( { $where: function() {
today = new Date(); //
today.setHours(0,0,0,0);
return (this._id.getTimestamp() >= today)
} } );
当然,有一个索引的时间戳字段,或者按照这种方法计算开始日期的ObjectID并将其与\u id进行比较要快得多,因为\u id也是索引的。
问题内容: 我有此查询以获取月结果。但是我想得到今天的结果。 做这个的最好方式是什么? 问题答案: 您的开始日期对象应将当前日期时间设置为(毫秒精度),并将今天的时间设置为: 然后像往常一样在您的MongoDB查询运算符中传递修改后的日期对象: 如果您正在使用 momentjs 库,则可以通过在当前当前日期对象上使用 and 方法,并将字符串作为参数传递来实现:
问题内容: 我想返回最近30天内添加到数据库中的所有记录。由于显示目的,我需要将日期转换为mm / dd / yy。 我的陈述未能将记录限制为最近30天-它选择了所有记录。 谁能指出我正确的方向?感觉就像我接近了。 谢谢,祝你度过愉快的一周。 问题答案: 您需要在子句而不是子句中应用: 另请注意,该查询仅返回日期的一部分,因此,如果您将“ a” 存储为时间部分,则此查询将不会选择今天的记录。 在这
问题内容: 如何提出一个存储过程来选择过去30天的结果? 问题答案: 用适当的列名称替换第一个GETDATE()。
1.手机版 查找方法:群聊右上角图标-查找聊天内容 2.电脑版 查找方法:群聊右上角图标-查找聊天内容
问题内容: 我想在MySQL数据库中提取重复记录。这可以通过以下方式完成: 结果是: 我想将其拉出,以使其显示重复的每一行。就像是: 关于如何做到这一点有什么想法?我试图避免做第一个,然后在代码中用第二个查询查找重复项。 问题答案: 关键是重写此查询,以便可以将其用作子查询。
find 查找匹配标准的记录,可以链式查询(见下文): Person.find({status:'active'}, function(err, results) { // ... }); 你也可以限制结果的个数,这条语句限制结果为10个: Person.find({status:'active'}, 10, function(err, results) { // ... }); Pers