我正在尝试通过编写mongodb查询来列出过去5天的结果。
Date.prototype.addDays = function(h) {
this.setTime(this.getTime() + (h*60*60*1000*24));
return this;
}
var beforeDate = (new Date()).addDays(-5);
var result = db.xxx.find( { CreatedDate: { $lt: beforeDate } } )
.map(function (doc) { return doc._id; });
print("----");
print(result);
但结果没有意义。我如何在最近 5 天内在 mongodb 集合中列出我的数据,编写简单的查询。
Script executed successfully, an empty result returned.
// Command #3 8:1 0,387 s
Script executed successfully, an empty result returned.
// Command #4 12:5 0,001 s
----
// Command #5 13:5 0,003 s
BinData(3,"FJguxz9zEk6e+is8JKRJGw=="),BinData(3, . . . . . ."
我有这个样本数据,
/* 1 createdAt:26/07/2019, 15:53:51*/
{
"_id" : ObjectId("5d3ad4b7a8672903e950a0c2"),
"date" : ISODate("2019-07-19T13:55:09.000+05:30")
},
/* 2 createdAt:26/07/2019, 15:53:47*/
{
"_id" : ObjectId("5d3ad4b3a8672903e950a0c1"),
"date" : ISODate("2019-07-20T13:55:09.000+05:30")
},
/* 3 createdAt:26/07/2019, 15:53:44*/
{
"_id" : ObjectId("5d3ad4b0a8672903e950a0c0"),
"date" : ISODate("2019-07-21T13:55:09.000+05:30")
},
/* 4 createdAt:26/07/2019, 15:53:41*/
{
"_id" : ObjectId("5d3ad4ada8672903e950a0bf"),
"date" : ISODate("2019-07-22T13:55:09.000+05:30")
},
/* 5 createdAt:26/07/2019, 15:53:36*/
{
"_id" : ObjectId("5d3ad4a8a8672903e950a0be"),
"date" : ISODate("2019-07-23T13:55:09.000+05:30")
},
/* 6 createdAt:26/07/2019, 15:53:34*/
{
"_id" : ObjectId("5d3ad4a6a8672903e950a0bd"),
"date" : ISODate("2019-07-24T13:55:09.000+05:30")
},
/* 7 createdAt:26/07/2019, 15:53:30*/
{
"_id" : ObjectId("5d3ad4a2a8672903e950a0bc"),
"date" : ISODate("2019-07-25T13:55:09.000+05:30")
},
/* 8 createdAt:26/07/2019, 15:53:26*/
{
"_id" : ObjectId("5d3ad49ea8672903e950a0bb"),
"date" : ISODate("2019-07-26T13:55:09.000+05:30")
}
您需要进行查询,
db.drt.find({ date: { $lt: date } }).limit(5)
对于最近 5 天的数据,您应该有这样的查询:
db.drt.find({ date: { $gt: new Date("2019-07-21T11:44:16.082Z") } })
javascript逻辑如下:
Date.prototype.addDays = function(h) {
this.setTime(this.getTime() + (h*60*60*1000*24));
return this.toISOString();
}
var beforeDate = (new Date()).addDays(-5);
console.log(beforeDate);
注意:请勿使用
limit
。它只会为您提供 5 条记录,我们需要最近 5 天的记录,这些记录可能是倍数。
希望这有帮助!