我在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] 删除。
我来说两句