现在的MongoDB>类似于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文档,但我假设您的收藏夹中有类似的东西:

{
    _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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章