spi*_*dog 23
添加createdAt字段,索引它,然后查询
db.getCollection("COLLECTION_NAME").find({"createdAt":{$gt:new Date(Date.now() - 24*60*60 * 1000)}})
Run Code Online (Sandbox Code Playgroud)
这将返回86400秒之前的所有记录.
Jon*_*Ong 17
如果您没有使用任何其他索引并且使用默认ObjectID作为_id,则可以执行以下操作:
var ObjectID = require('mongodb').ObjectID
db.collection.find({
_id: {
$gt: ObjectID.createFromTime(Date.now() / 1000 - 24*60*60)
}
}, callback)
Run Code Online (Sandbox Code Playgroud)
对于通过谷歌登陆这里的其他人,您可以在mongo shell中执行此操作,如下所示:
db.collection.find({ $where: function () { return Date.now() - this._id.getTimestamp() < (24 * 60 * 60 * 1000) } })
Run Code Online (Sandbox Code Playgroud)
在猫鼬中使用它
let ObjectId = require('mongodb').ObjectID;
Property.find({
_id: {
$gt: ObjectId.createFromTime(Date.now() / 1000 - 24 * 60 * 60)
}
}, (err, result) => {
console.log(err || result);
});
Run Code Online (Sandbox Code Playgroud)
首先,如果您向人们提供您的收藏的架构,那将会非常有帮助。
但仅仅因为已经过去了 3 个小时而没有人回复,我会尝试:
假设您有一个条目,并且它有一个 createAt 字段,它是一个 ISODate:
{
somefield: "test",
createdAt: ISODate("2012-08-13T04:00:00Z")
}
Run Code Online (Sandbox Code Playgroud)
所以你需要做的就是给这个字段建立一个索引
db.yourColl.ensureIndex({createdAt:1});
Run Code Online (Sandbox Code Playgroud)
然后,您可以在 Node.js 中获取当前时间,替换您的 24 小时并获得开始值。(据我所知,mongdb 中没有类似 NOW 的东西。如果我错了,请纠正我。)
db.yourColl.find({
createdAt: {
$gte: start
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24906 次 |
| 最近记录: |