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))}})
我在 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))}})