MongoDB 现在 > 区间喜欢 SQL

MongoDB Now > Interval Like SQL

我在 mongodb 之前使用了 mysql,我必须将以下 sql 查询转换为 mongo:

WHERE NOW() > (Field + INTERVAL 3 DAY)

我只是找到了一种方法来检查日期是否介于 到 日期之间,但这不是我的解决方案。

示例文档:

{
    "_id" : ObjectId("54cd524be811410c1048a9ef"),
    "UserID" : 0,
    "root" : {
        "files" : [ 
            {
                "FileID" : 1,
                "UploadStatus" : "Unfinished",
                "FileName" : "",
                "FileSize" : 3.2,
                "FileKey" : "",
                "StartUploadRequest" : "2015-01-11 16:43:11",
                "ServerID" : 0,
                "Path" : [                         
                ]
            }
        ]
    }
}

我真的需要你的示例 mongo 文档,但我假设你的 collection:

中有类似的东西
{
    _id = "item0",
    Field : ISODate("2014-11-10T00:00:00.000Z"),
}

然后:

db.collection.aggregate(
[    
    { $project : { 'comp' : { $add : ['$Field', (3 * 24 * 3600 * 1000)] }, Field : 1 } },
    { $match : { 'comp' : { $lt : new Date()} } },
]).result

我上面的查询 new Date() 将给我们 Now 并且 (3 * 24 * 3600 * 1000) 将产生以毫秒为单位的 3 天偏移量。

更新:

根据您的样本结局,查询应该是:

db.collection.aggregate(
[    
    { $unwind : '$root.files'}, 
    { $project : { 'comp' : { $add : ['$root.files.StartUploadRequest', (3 * 24 * 3600 * 1000)] }, 'root.files': 1 } },
    { $match : { 'comp' : { $lt : new Date()} } },
]).result

只需现在调整 3 天,然后查询:

db.collection.find({root.files.StartUploadRequest:
     {$lt : new Date(new Date()-(3 * 24 * 3600 * 1000))}})