如何在 mongodb 数据库中列出最近 5 天的结果



我正在尝试通过编写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 天的记录,这些记录可能是倍数。

希望这有帮助!

最新更新