MongoDB Now>;类区间SQL
我在mongodb之前使用过mysql,我必须将以下sql查询转换为mongo: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" : [ {
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))}})