MongoDB Now>;类区间SQL

MongoDB Now>;类区间SQL,sql,mongodb,mongodb-query,Sql,Mongodb,Mongodb Query,我在mongodb之前使用过mysql,我必须将以下sql查询转换为mongo: WHERE NOW() > (Field + INTERVAL 3 DAY) 我只是想办法检查一个日期是否在到之间,但这不是我的解决方案 样本文件: { "_id" : ObjectId("54cd524be811410c1048a9ef"), "UserID" : 0, "root" : { "files" : [ {

我在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文档样本,但我假设您的收藏中有类似的内容:

{
    _id = "item0",
    Field : ISODate("2014-11-10T00:00:00.000Z"),
}
然后:

我上面的查询
newdate()
将为我们提供
现在的
(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))}})

类似的内容可能会有所帮助,但我无法想象如何使用这个.db.user_folders.aggregate([{$project:{'comp':{$add:['$startupboadRequest',(3*24*3600*1000)],'startupboadRequest':1},{$match:{'comp':{$lt:new Date()},])处理我的查询。结果是,但它不起作用。ok为1,但结果长度为0。我在回答中发布了我的结构有一些问题,首先你的StartUploadRequest是string,而不是IsoDate()@Hendrik,你必须删除你的答案,我用示例文档更新了你的问题,你不应该将编辑或示例发布为回答谢谢。你是最好的。它工作:)我删除它。对不起,下次我不会再犯同样的错误了。你能在答案的左上角打勾吗?你是对的,我不知道我为什么会有这么复杂的答案+1.
db.collection.find({root.files.StartUploadRequest:
     {$lt : new Date(new Date()-(3 * 24 * 3600 * 1000))}})