【问题标题】:MongoDB Now > Interval Like SQLMongoDB Now > 像 SQL 一样的间隔
【发布时间】:2015-02-01 20:52:34
【问题描述】:

我在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" : [                         
                ]
            }
        ]
    }
}

【问题讨论】:

标签: sql mongodb mongodb-query


【解决方案1】:

我真的需要你的示例 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

【讨论】:

  • db.user_folders.aggregate( [ { $project : { 'comp' : { $add : ['$StartUploadRequest', (3 * 24 * 3600 * 1000)] }, 'StartUploadRequest' : 1 } }, { $match : { 'comp' : { $lt : new Date()} } }, ]).result 但它不起作用。 ok 是 1 但结果长度 = 0。我在答案中发布了我的结构
  • 有一些问题,首先你的 StartUploadRequest 是字符串,而不是 IsoDate()
  • @Hendrik,你必须删除你的答案,我用示例文档更新了你的问题,你不应该发布编辑或示例作为答案
  • 谢谢伙计。你是最好的。它有效:))我删除它。对不起,下次我不会犯同样的错误
  • 您是否将解决方案标记为答案,我的答案左上方有一个小勾
【解决方案2】:

现在只需调整 3 天,然后对此进行查询:

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

【讨论】:

  • 你说得对,我不知道我为什么要提出那个复杂的解决方案。 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-17
  • 2021-04-16
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
相关资源
最近更新 更多