2016-02-26 23 views
0

编辑以更好的解释:搜索当日的条目有很多条目分钟到分钟

我有很多条目在所有的一天,我的收藏

文件是这样的:

{ 
"type": "Watches", 
"timestamp": ISODate("2016-02-23T21:00:00.000Z"), 
"price": 100.77 
} 
{ 
"type": "Watches", 
"timestamp": ISODate("2016-02-23T20:50:00.000Z"), 
"price": 200.77 
} 
{ 
"type": "Watches", 
"timestamp": ISODate("2016-02-24T21:00:00.000Z"), 
"price": 300.77 
} 
{ 
"type": "Watches", 
"timestamp": ISODate("2016-02-24T20:51:00.000Z"), 
"price": 94.77 
} 

条目将在几分钟内保存。但是,有些日子根本没有条目。

那么,如何在21:00搜索所有条目,直到获得10个结果? (跳过的日子,有没有条目)

我第一次尝试是形成阵列,如:

var array_of_dates =[ Thu Feb 24 2016 21:00:00 GMT-0300 (ART), 
         Wed Feb 23 2016 21:00:00 GMT-0300 (ART) ] 

,并与{“在$”:array_of_dates}使用它,但是,如果一些日子,有不是entris,我得到不到10个结果。

+1

所以,你会查询指定的日期和具体时间?你可以编辑你的问题,包括你的查询输入样本。 – BatScream

+1

因为你的意图不是非常清楚,所以在这里与@BatScream相关,这个标题似乎与问题的一般主体不一致。你可能会在每天早上8点之前询问*“最后20个参赛作品”,但这只是对解读的猜测。 MongoDB确实“仍然”(当前)缺乏必要的操作员,无法在单个“查询”操作中有效地进行数据收集,至少对于“大型”数据集。因此,您的最佳方法仍然是运行多个查询,理想情况是并行并结合结果。 –

+0

@BatScream现在你能理解吗? – Casy

回答

0

关于

那么,如何可以搜索在21:00至所有入口得到10个结果?

这个答案可能会有所帮助:https://stackoverflow.com/a/2943685/3359432

在MongoDB中,你可以使用$ LT,$ GT等的日期字段。确保你创建了一个你想比较的Date对象并将它传递给find查询。看看代码...

查询示例蒙戈壳牌:

db.collection('myCollection').find({ 
    timestamp: {$gt: new Date(+new Date() - 10* 60 * 1000)} //time in milliseconds 
}).limit(10).toArray() 

上面的查询会发现10个文件,其是从当前时间10分钟(10 * 60 * 1000毫秒)内。这是在Mongo Shell中执行的命令。

如果您在使用的Node.js猫鼬,你可以为我现在用它使用以下查询:

yourCollectionSchema.find({ 
     timestamp: { 
     '$gt': new Date(+new Date() - 10 * 60 * 1000) //time in milliseconds 
     } 
    }) 
.then(function(docs){ 
    console.log(docs)// Use the data 
}); 
+0

谢谢,但是这给了我在几分钟内的条目,我需要在时间段内搜索,我希望10个条目之间用10分钟分隔 – Casy